💎 Lehrpfad 4: Enterprise Architekturen

Java 15: JUnit 5 Testsuites & Assertions

Schreibe professionelle Unit-Tests mit JUnit 5 (Jupiter): Test-Lifecycle (@BeforeEach), Assertions, assertThrows und parametrisierte Tests.

📂 Dateien dieser Lerneinheit:
📄 Aufgabe.java (Startercode) 🧪 TestAufgabe.java (Tests) 💡 Musterloesung.java (Lösung) 📖 README.md

💡 1. Moderne Testsuites mit JUnit 5

JUnit 5 trennt API, Engine und Runner sauber. Tests validieren Annahmen mit sprechenden Assertions:

import org.junit.jupiter.api.*;
import static org.junit.jupiter.api.Assertions.*;

class RechnerTest {
    private Rechner rechner;

    @BeforeEach
    void setUp() {
        rechner = new Rechner();
    }

    @Test
    @DisplayName("Division durch Null wirft IllegalArgumentException")
    void testDivisionDurchNull() {
        var ex = assertThrows(IllegalArgumentException.class, () -> {
            rechner.dividiere(10, 0);
        });
        assertEquals("Teiler darf nicht 0 sein", ex.getMessage());
    }
}
🔬 Didaktische Analogie: Das Qualitätslabor

Ein Unit-Test ist wie die Qualitätskontrolle am Ende der Fertigungslinie. Jedes Bauteil wird einzeln auf Belastung geprüft, bevor es ins Gesamtprodukt eingebaut wird.

⚡ 2. Quick-Cheat-Sheet

AnnotationBedeutungZeitpunkt
@TestMarkiert Methode als TestfallWird vom Test-Runner ausgeführt
@BeforeEachSetup-MethodeLäuft frisch vor JEDEM Testfall
@AfterEachCleanup-MethodeLäuft nach jedem Testfall
@ParameterizedTestDatengesteuerter TestLäuft mehrfach mit Testwerten (z.B. `@ValueSource`)

⚠️ 3. Häufige Stolperfallen (Gotchas & Anti-Patterns)

⚠️ Falsches Package importiert

Importiert man versehentlich das alte org.junit.Test (JUnit 4) statt org.junit.jupiter.api.Test (JUnit 5), ignoriert der moderne Runner den Test!

⚠️ Reihenfolge der Parameter bei assertEquals

In JUnit 5 gilt: assertEquals(expected, actual). Vertauscht man sie, sind Fehlermeldungen bei Fehlschlägen irreführend.

🧠 4. Diagnostischer Selbst-Check

Überprüfe dein Verständnis von Sprach-Features, Speicherverwaltung und Enterprise-Architektur, bevor du den Code in der Web-IDE schreibst.

🎯 5. Aufgaben & Checkliste in Aufgabe.java

💻 In Web-IDE öffnen & lösen →