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
Libérer: 2025-01-04 07:54:35
original
442 Les gens l'ont consulté

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);
}
Copier après la connexion

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);
}
Copier après la connexion

Google-Truth :

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

@Test
public void testFooThrowsIndexOutOfBoundsException() {
    assertThat(assertThrows(IndexOutOfBoundsException.class, foo::doStuff)).isNotNull();
}
Copier après la connexion

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);
}
Copier après la connexion

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);
    }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal