„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Erweitertes Testen mit JUnit 5

Erweitertes Testen mit JUnit 5

Veröffentlicht am 07.08.2024
Durchsuche:330

Advanced Testing with JUnit 5

JUnit. Es führt mehrere leistungsstarke Funktionen und Verbesserungen ein, die das Schreiben, Organisieren und Ausführen von Tests erleichtern. Das Verständnis dieser erweiterten Funktionen kann Ihnen dabei helfen, robustere und wartbarere Testsuiten zu erstellen.

Was ist JUnit 5?

JUnit 5 ist ein großes Update des JUnit-Frameworks, das flexibler und modularer gestaltet ist. Es besteht aus drei Hauptkomponenten:

  1. JUnit-Plattform: Die Grundlage für die Einführung von Test-Frameworks auf der JVM.
  2. JUnit Jupiter: Das neue Programmiermodell und Erweiterungsmodell zum Schreiben von Tests.
  3. JUnit Vintage: Bietet Unterstützung für die Ausführung von JUnit 3- und JUnit 4-Tests auf der JUnit 5-Plattform.

Hauptmerkmale von JUnit 5

  1. Anzeigenamen: Kommentieren Sie Tests mit benutzerdefinierten Anzeigenamen für eine bessere Lesbarkeit.
  2. Verschachtelte Tests: Organisieren Sie Tests hierarchisch, um die Struktur des getesteten Codes widerzuspiegeln.
  3. Dynamische Tests: Erstellen Sie Tests dynamisch zur Laufzeit.
  4. Tagging und Filterung: Gruppieren Sie Tests mithilfe von Tags und filtern Sie sie während der Ausführung.
  5. Behauptungen und Annahmen: Verbesserte Unterstützung für Behauptungen und Annahmen zur Steuerung des Testausführungsablaufs.

Beispiel: Verwendung erweiterter Funktionen von JUnit 5

  1. Benutzerdefinierte Anzeigenamen:
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;

@DisplayName("Calculator Tests")
class CalculatorTest {

    @Test
    @DisplayName("Addition Test")
    void testAddition() {
        assertEquals(2, 1   1, "1   1 should equal 2");
    }
}
  1. Verschachtelte Tests:
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;

class OuterTest {

    @Nested
    class InnerTest {
        @Test
        void innerTest() {
            // Test logic here
        }
    }
}
  1. Dynamische Tests:
import org.junit.jupiter.api.DynamicTest;
import org.junit.jupiter.api.TestFactory;
import java.util.stream.Stream;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.DynamicTest.dynamicTest;

class DynamicTestsDemo {

    @TestFactory
    Stream dynamicTests() {
        return Stream.of(1, 2, 3, 4, 5)
                .map(number -> dynamicTest("Test number "   number, () -> assertTrue(number > 0)));
    }
}
  1. Tagging und Filterung:
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;

class TaggingTest {

    @Test
    @Tag("fast")
    void fastTest() {
        // Fast test logic here
    }

    @Test
    @Tag("slow")
    void slowTest() {
        // Slow test logic here
    }
}
  1. Behauptungen und Annahmen:
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assumptions.assumeTrue;

class AssertionsDemo {

    @Test
    void testException() {
        assertThrows(IllegalArgumentException.class, () -> {
            throw new IllegalArgumentException("Exception message");
        });
    }

    @Test
    void testAssumption() {
        assumeTrue(5 > 1);
        // Test logic here
    }
}

Abschluss

JUnit 5 bietet eine Fülle neuer Funktionen und Verbesserungen, die es zu einem leistungsstarken Tool für moderne Java-Tests machen. Durch die Nutzung dieser erweiterten Funktionen können Sie besser organisierte, flexiblere und wartbarere Testsuiten erstellen und so sicherstellen, dass Ihr Code robust und zuverlässig ist.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/adaumircosta/advanced-testing-with-junit-5-1nh?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3