Heim > Java > javaLernprogramm > Wie kann man Ausnahmen in JUnit-Tests effektiv geltend machen?

Wie kann man Ausnahmen in JUnit-Tests effektiv geltend machen?

Patricia Arquette
Freigeben: 2024-12-20 07:51:12
Original
918 Leute haben es durchsucht

How to Effectively Assert Exceptions in JUnit Tests?

Ausführung von Ausnahmezusicherungen in JUnit-Tests

Die Behauptung, dass während der Codeausführung eine bestimmte Ausnahme ausgelöst wird, ist ein häufiges Testszenario in JUnit. Um dies effektiv zu tun, bietet JUnit mehrere Methoden, die die Lesbarkeit verbessern und den Testprozess vereinfachen.

JUnit 5 und 4.13 Assertions

In JUnit 5 und 4.13 ist der @Test Es kann eine Annotation mit dem erwarteten Attribut verwendet werden direkt:

@Test
public void testIndexOutOfBoundsException() {
    ArrayList<Object> emptyList = new ArrayList<>();
    assertThrows(IndexOutOfBoundsException.class, () -> emptyList.get(0));
}
Nach dem Login kopieren

AssertJ und Google Truth Assertions

Externe Assertionsbibliotheken wie AssertJ und Google Truth bieten zusätzliche Methoden für Ausnahmen Behauptungen:

AssertJ:

import static org.assertj.core.api.Assertions.*;

@Test
public void testIndexOutOfBoundsException() {
    ArrayList<Object> emptyList = new ArrayList<>();
    assertThatThrownBy(() -> emptyList.get(0))
        .isInstanceOf(IndexOutOfBoundsException.class);
}
Nach dem Login kopieren

Google Truth:

import static com.google.common.truth.Truth.*;

@Test
public void testIndexOutOfBoundsException() {
    ArrayList<Object> emptyList = new ArrayList<>();
    assertThatCode(() -> emptyList.get(0)).willThrow(IndexOutOfBoundsException.class);
}
Nach dem Login kopieren

JUnit Pre-4.13 Behauptungen (veraltet)

Für JUnit In Versionen vor 4.13 bestand ein umständlicherer Ansatz darin, innerhalb eines Try-Catch-Blocks manuell nach der Ausnahme zu suchen:

@Test
public void testIndexOutOfBoundsException() {
    boolean thrown = false;
    ArrayList<Object> emptyList = new ArrayList<>();

    try {
        emptyList.get(0);  // Intentionally triggers an exception
    } catch (IndexOutOfBoundsException e) {
        thrown = true;
    }

    assertTrue(thrown);
}
Nach dem Login kopieren

Dieser Ansatz ist veraltet und weniger idiomatisch als die oben genannten Methoden. Weitere Informationen finden Sie in den [JUnit Test-FAQ](https://junit.org/junit4/faq.html).

Das obige ist der detaillierte Inhalt vonWie kann man Ausnahmen in JUnit-Tests effektiv geltend machen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage