Maison >Java >javaDidacticiel >Comment puis-je affirmer la gestion des exceptions dans les tests JUnit ?

Comment puis-je affirmer la gestion des exceptions dans les tests JUnit ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-04 07:54:35518parcourir

How Do I Assert Exception Handling in JUnit Tests?

Assertion de la gestion des exceptions dans les tests JUnit

Dans JUnit, tester le code qui doit lever une exception nécessite une approche propre et concise. Bien qu'il soit possible de vérifier manuellement les exceptions, ce n'est pas une méthode idiomatique.

JUnit 5 et 4.13

Dans les versions JUnit 5 et 4.13, vous pouvez utiliser l'annotation @Test(expected = ExceptionClass.class) sur la méthode de test. Cela s'attend à ce que l'exception spécifiée soit levée.

Exemple :

@Test(expected = IndexOutOfBoundsException.class)
public void testIndexOutOfBoundsException() {
    ArrayList emptyList = new ArrayList();
    emptyList.get(0);
}

AssertJ et Google-Truth

Si vous utilisez des bibliothèques comme AssertJ ou Google-Truth, vous pouvez employer leurs affirmations pour valider exceptions.

AssertJ :

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

@Test
public void testFooThrowsIndexOutOfBoundsException() {
    assertThatThrownBy(() -> foo.doStuff()).isInstanceOf(IndexOutOfBoundsException.class);
}

Google-Truth :

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

@Test
public void testFooThrowsIndexOutOfBoundsException() {
    assertThat(assertThrows(IndexOutOfBoundsException.class, foo::doStuff)).isNotNull();
}

JUnit <= 4.12

Dans les versions JUnit inférieures ou égales à 4.12, vous pouvez utiliser Rule ou TryCatch pour gérer les exceptions.

Utilisation de la règle :

@Rule
public ExpectedException thrown = ExpectedException.none();

@Test
public void testIndexOutOfBoundsException() {
    thrown.expect(IndexOutOfBoundsException.class);
    ArrayList emptyList = new ArrayList();
    emptyList.get(0);
}

Utilisation de TryCatch :

import static org.junit.Assert.assertEquals;

@Test
public void testIndexOutOfBoundsException() {
    try {
        ArrayList emptyList = new ArrayList();
        emptyList.get(0);
        fail("IndexOutOfBoundsException was expected");
    } catch (IndexOutOfBoundsException e) {
        assertEquals(e.getClass(), IndexOutOfBoundsException.class);
    }
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn