Het JUnit-framework verbinden

Voor het testen van Java-code hebben we een geweldig raamwerk genaamd JUnit . Het werkt geweldig, het wordt constant bijgewerkt, het is erg populair en natuurlijk is Intellij IDEA er erg nauw mee geïntegreerd.

Nu gebruikt iedereen de vijfde versie van dit raamwerk - JUnit 5 , hoewel je in veel projecten nog steeds de vierde versie kunt vinden. Ze zijn niet veel anders, maar we zullen toch de nieuwste bekijken. Ik denk dat tegen de tijd dat je actief tests gaat schrijven, je mijn keuze zult goedkeuren.

Dus, hoe JUnit aan het project toe te voegen? Na het leren van Maven zal het gemakkelijk zijn: voeg gewoon deze code toe aan je pom.xml:

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
	<version>5.8.1</version>
	<scope>test</scope>
</dependency>

Trouwens, als je wilt dat Maven je tests uitvoert in de bouwfase ( testfase ), dan moet je nog een fragment toevoegen aan 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>

@Test annotatie

Stel dat je een klas hebt die je wilt testen. Wat is de beste manier om dit te doen? Laten we beginnen met een voorbeeld, want het is moeilijk om een ​​abstracte klasse te testen :)

Stel dat we een klasse Rekenmachine hebben die 4 basisbewerkingen kan uitvoeren: optellen, aftrekken, vermenigvuldigen en delen. Laten we het schrijven:

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;
    	}
}

We willen de methoden van deze klasse testen. Je weet maar nooit, in de toekomst veranderen ze iets en zal alles stoppen met werken. Hoe kunnen we er tests voor schrijven?

We moeten een andere klasse maken. Om dit te doen, nemen ze meestal dezelfde naam aan en voegen ze het achtervoegsel Test toe . Voor elke methode moet u minimaal één testmethode toevoegen. Voorbeeld:

class CalculatorTest {
   	@Test
    	public void add() {
    	}
   	@Test
    	public void sub() {
        }
   	@Test
    	public void mul() {
    	}
   	@Test
    	public void div() {
    	}
}

Vroeger was het een vereiste dat de naam van de methode begint met het woord test , maar dit is niet langer vereist.

JUnit-testvoorbeelden

Laten we enkele voorbeelden schrijven waarin we de methoden van onze klasse CalculatorTest zullen testen :

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);
    	}
}

Zo ziet een typische JUnit-test eruit. Van het interessante: de speciale methode assertEquals() wordt hier gebruikt : het vergelijkt de parameters die eraan zijn doorgegeven, zoals aangegeven door het woord is gelijk aan in zijn naam.

Als de parameters die worden doorgegeven aan assertEquals() niet gelijk zijn, genereert de methode een uitzondering en mislukt de test. Deze uitzondering verhindert niet dat andere tests worden uitgevoerd.