Skip to main content

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​

src/main/java/ch/zzelav/Calculator.java
package ch.zzelav;

public class Calculator {
public int addition(int a, int b) {
return a + b;
}
}
src/test/java/ch/zzelav/CalculatorTest.java
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.