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.