Tilslutning af JUnit-rammeværket
Til test af Java-kode har vi en fantastisk ramme kaldet JUnit . Det fungerer fantastisk, det opdateres konstant, det er meget populært og selvfølgelig er Intellij IDEA meget tæt integreret med det.
Nu bruger alle den femte version af denne ramme - JUnit 5 , selvom du i mange projekter stadig kan finde dens fjerde version. De er ikke meget forskellige, men vi tager alligevel et kig på den nyeste. Jeg tror, når du begynder aktivt at skrive prøver, vil du godkende mit valg.
Så hvordan tilføjer man JUnit til projektet? Efter at have lært Maven vil det være nemt: bare tilføje denne kode til din 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 have Maven til at køre dine tests på byggestadiet ( teststadiet ), så skal du tilføje et fragment mere til 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>
@Testanmærkning
Lad os sige, at du har en klasse, du vil teste. Hvad er den bedste måde at gøre dette på? Lad os starte med et eksempel, for det er svært at teste en abstrakt klasse :)
Antag, at vi har en Calculator- klasse , der kan udføre 4 grundlæggende operationer: addition, subtraktion, multiplikation og division. Lad os 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 at teste metoderne i denne klasse. Du ved aldrig, i fremtiden ændrer de noget, og alt vil holde op med at fungere. Hvordan kan vi skrive test til det?
Vi skal oprette en anden klasse. For at gøre dette tager de normalt det samme navn og tilføjer suffikset Test . For hver metode skal du tilføje mindst én testmetode. Eksempel:
class CalculatorTest {
@Test
public void add() {
}
@Test
public void sub() {
}
@Test
public void mul() {
}
@Test
public void div() {
}
}
Tidligere var der et krav om, at metodenavnet skulle starte med ordet test , men det er ikke længere påkrævet.
JUnit test eksempler
Lad os skrive nogle eksempler, hvor vi vil teste metoderne i vores 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);
}
}
Sådan ser en typisk JUnit-test ud. Fra det interessante: den specielle metode assertEquals() bruges her : den sammenligner de parametre, der sendes til den, som angivet af ordet equals i navnet.
Hvis parametrene, der sendes til assertEquals() ikke er ens, vil metoden give en undtagelse, og testen mislykkes. Denne undtagelse forhindrer ikke andre test i at køre.
GO TO FULL VERSION