Anbindung des JUnit-Frameworks

Zum Testen von Java-Code haben wir ein großartiges Framework namens JUnit . Es funktioniert großartig, wird ständig aktualisiert, ist sehr beliebt und natürlich ist Intellij IDEA sehr eng darin integriert.

Mittlerweile nutzt jeder die fünfte Version dieses Frameworks – JUnit 5 , obwohl man in vielen Projekten immer noch die vierte Version findet. Sie unterscheiden sich nicht sehr, aber wir schauen uns trotzdem das neueste an. Ich denke, wenn Sie anfangen, aktiv Tests zu schreiben, werden Sie meiner Wahl zustimmen.

Wie füge ich JUnit zum Projekt hinzu? Nachdem Sie Maven gelernt haben, wird es einfach sein: Fügen Sie einfach diesen Code zu Ihrer pom.xml hinzu:

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

Übrigens, wenn Sie möchten, dass Maven Ihre Tests in der Build-Phase ( Testphase ) ausführt, müssen Sie pom.xml ein weiteres Fragment hinzufügen:

<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-Anmerkung

Nehmen wir an, Sie haben eine Klasse, die Sie testen möchten. Wie geht das am besten? Beginnen wir mit einem Beispiel, denn es ist schwierig, eine abstrakte Klasse zu testen :)

Angenommen, wir haben eine Rechnerklasse , die vier Grundoperationen ausführen kann: Addition, Subtraktion, Multiplikation und Division. Schreiben wir es:

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

Wir wollen die Methoden dieser Klasse testen. Man weiß nie, in Zukunft ändern sie etwas und alles wird nicht mehr funktionieren. Wie können wir Tests dafür schreiben?

Wir müssen eine weitere Klasse erstellen. Dazu nehmen sie meist den gleichen Namen und fügen das Suffix Test hinzu . Für jede Methode müssen Sie mindestens eine Testmethode hinzufügen. Beispiel:

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

Früher war es erforderlich, dass der Methodenname mit dem Wort test beginnen musste , dies ist jedoch nicht mehr erforderlich.

JUnit-Testbeispiele

Schreiben wir einige Beispiele, in denen wir die Methoden unserer CalculatorTest- Klasse 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);
    	}
}

So sieht ein typischer JUnit-Test aus. Aus dem Interessanten: Hier wird die spezielle Methode „assertEquals()“ verwendet : Sie vergleicht die ihr übergebenen Parameter, wie durch das Wort „equals“ in ihrem Namen angezeigt.

Wenn die an AssertEquals() übergebenen Parameter nicht gleich sind, löst die Methode eine Ausnahme aus und der Test schlägt fehl. Diese Ausnahme verhindert nicht die Ausführung anderer Tests.