T3: JUnit Testing
1 Was ist Testing?​
Software Testing wird genutzt um Teile der Software zu überprüfen und zu schauen ob sie das richtige Verhalten aufweist. Normalerweise werden Test's automatisch beim Builden der Software ausgeführt. Somit wird es verhindert, den Code beim Programmieren zu "zerstören". Umso mehr automatische Test's definiert wurden, umso einfacher ist die Fehlerbehebung bei Programmfehlern.
2 JUnit 5​
2.1 Konfiguration​
Um JUnit 5 mit Maven zu nutzen mĂĽssen einige Konfiguration vorgenommen werden.
- Mindestenst Version 11 von Java
- Dependencies hinzufĂĽgen
Dependencies:
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.7.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.7.2</version>
<scope>test</scope>
</dependency>
2.2 Test definieren​
Um JUnit Test's zu schreiben, muss man den Code in eine Methode von einer Test-Klasse schreiben. Diese Klasse wird explizit fĂĽr das Testing genutzt. Vor der Methode muss die Annotation @Test
hinzugefĂĽgt werden. Diese zeigt, dass diese Methode eine Testing-Methode ist.
Test-Klassen sollten im Directory src/test/java
erstellt werden.
3 Beispiel​
package ch.zzelav;
public class Calculator {
public int addition(int a, int b) {
return a + b;
}
}
package ch.zzelav;
import static org.junit.Assert.assertTrue;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
class CalculatorTest {
Calculator calculator;
@BeforeEach
void setUp() {
calculator = new Calculator();
}
@Test
@DisplayName("Simple always true method")
void shouldAnswerWithTrue() {
assertTrue(true);
}
@Test
@DisplayName("Simple addition should work")
void testAddition() {
assertEquals(9, calculator.addition(4, 5), "Simple addition didn't work");
}
}
Calculator.java : Hier wird ein einfacher Taschenrechner erstellt, der zwei int
's als Ăśbergabeparameter bekommt und diese zusammenrechnet.
CalculatorTest.java : In dieser Test-Klasse wird die andere Klasse getestet. Als erstes wird ein neuer Calculator
erstellt. Die Methode setUp()
wird bei jedem Test benötigt und dient als Start des Tests. Mit der @BeforeEach
Annotation wird gesagt, dass vor jedem Test, diese Methode ausgefĂĽhrt werden soll.
Danach kommen die Test-Methoden. Die erste Methode sollte immer TRUE
ergeben. Mit der Annotation @Test
wird definiert, dass dies eine Test-Methode ist. Die zweite Test-Methode, testet eine Methode der Klasse Calculator
. Mit der Annotation @DisplayName
wird ein Text definiert, der dem User bei der AusfĂĽhrung dieser Methode angezeigt werden soll. In der Methode wird mit assertEquals()
ein Ergebnis vorgegeben, danach die auszufĂĽhrende Methode und das dritte Argument definiert, was angezeigt werden soll, wenn der Test ein Fehler ausgibt.