Koble til JUnit-rammeverket
For å teste Java-kode har vi et flott rammeverk kalt JUnit . Den fungerer utmerket, den oppdateres konstant, den er veldig populær og selvfølgelig er Intellij IDEA veldig tett integrert med den.
Nå bruker alle den femte versjonen av dette rammeverket - JUnit 5 , selv om du fortsatt kan finne den fjerde versjonen i mange prosjekter. De er ikke mye forskjellige, men vi skal uansett ta en titt på den nyeste. Jeg tror at når du begynner aktivt å skrive tester, vil du godkjenne valget mitt.
Så, hvordan legge til JUnit til prosjektet? Etter å ha lært Maven vil det være enkelt: bare legg til denne koden til pom.xml:
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.8.1</version>
<scope>test</scope>
</dependency>
Forresten, hvis du vil at Maven skal kjøre testene dine på byggestadiet ( teststadiet ), må du legge til ett fragment til i pom.xml:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<dependencies>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-surefire-provider</artifactId>
<version>1.3.2</version>
</dependency>
</dependencies>
</plugin>
@Testkommentar
La oss si at du har en klasse du vil teste. Hva er den beste måten å gjøre dette på? La oss starte med et eksempel, for det er vanskelig å teste en abstrakt klasse :)
Anta at vi har en kalkulatorklasse som kan utføre 4 grunnleggende operasjoner: addisjon, subtraksjon, multiplikasjon og divisjon. La oss skrive det:
class Calculator {
public int add(int a, int b) {
return a+b;
}
public int sub(int a, int b) {
return a-b;
}
public int mul (int a, int b) {
return a*b;
}
public int div(int a, int b) {
return a/b;
}
}
Vi ønsker å teste metodene i denne klassen. Du vet aldri, i fremtiden endrer de noe og alt vil slutte å fungere. Hvordan kan vi skrive tester for det?
Vi må lage en annen klasse. For å gjøre dette tar de vanligvis samme navn og legger til Test-suffikset . For hver metode må du legge til minst én testmetode. Eksempel:
class CalculatorTest {
@Test
public void add() {
}
@Test
public void sub() {
}
@Test
public void mul() {
}
@Test
public void div() {
}
}
Tidligere var det et krav om at metodenavnet skulle begynne med ordet test , men dette er ikke lenger nødvendig.
JUnit test eksempler
La oss skrive noen eksempler der vi vil teste metodene til vår CalculatorTest- klasse :
class CalculatorTest {
@Test
public void add() {
Calculator calc = new Calculator();
int result = calc.add(2, 3);
assertEquals(5, result);
}
@Test
public void sub() {
Calculator calc = new Calculator();
int result = calc.sub(10, 10);
assertEquals(0, result);
}
@Test
public void mul() {
Calculator calc = new Calculator();
int result = calc.mul(-5, -3);
assertEquals(15, result);
}
@Test
public void div() {
Calculator calc = new Calculator();
int result = calc.div(2, 3);
assertEquals(0, result);
}
}
Slik ser en typisk JUnit-test ut. Fra det interessante: den spesielle metoden assertEquals() brukes her : den sammenligner parameterne som sendes til den, som indikert av ordet likes i navnet.
Hvis parameterne som sendes til assertEquals() ikke er like, vil metoden gi et unntak og testen mislykkes. Dette unntaket vil ikke hindre andre tester i å kjøre.
GO TO FULL VERSION