Java:
Skrive tester
Hvordan:
Java-utviklere bruker primært to rammeverk for testing: JUnit og TestNG. Her vil vi fokusere på JUnit, det mer populære valget for å skrive tester på grunn av dets enkelhet og utbredte adopsjon.
Grunnleggende om JUnit
For å bruke JUnit i ditt Maven-prosjekt, legg til følgende avhengighet i din pom.xml
:
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.9.0</version>
<scope>test</scope>
</dependency>
En grunnleggende test i JUnit ser slik ut:
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class CalculatorTest {
@Test
public void testAdd() {
Calculator kalkulator = new Calculator();
assertEquals(5, kalkulator.add(2, 3), "2 + 3 skal være lik 5");
}
}
Å utføre denne testen vil enten passere, noe som indikerer at add
-metoden fungerer som forventet, eller feile, og vise en feilmelding.
Mocking med Mockito
I virkelige scenarioer er objekter ofte avhengige av andre objekter. Mockito er et populært mocking-rammeverk som hjelper i å opprette mock-objekter for formålet med testing.
Legg til Mockito i ditt Maven-prosjekt:
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>4.5.1</version>
<scope>test</scope>
</dependency>
Et enkelt brukstilfelle med Mockito:
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.*;
public class UserServiceTest {
@Test
public void testGetUsername() {
// Opprett en mock UserRepository
UserRepository mockRepository = mock(UserRepository.class);
// Definer oppførsel for mock-objektet
when(mockRepository.getUsername(1)).thenReturn("john_doe");
UserService userService = new UserService(mockRepository);
assertEquals("john_doe", userService.getUsername(1), "Bruker-ID 1 skal være john_doe");
}
}
Denne mocken lar oss teste UserService
uten å trenge et faktisk UserRepository
, og fokuserer testen på logikken innenfor UserService
selv.