Maison > Java > javaDidacticiel > Comment affirmer efficacement les exceptions dans les tests JUnit ?

Comment affirmer efficacement les exceptions dans les tests JUnit ?

Patricia Arquette
Libérer: 2024-12-20 07:51:12
original
918 Les gens l'ont consulté

How to Effectively Assert Exceptions in JUnit Tests?

Exécuter des assertions d'exception dans les tests JUnit

Affirmer qu'une exception spécifique est levée lors de l'exécution du code est un scénario de test courant dans JUnit. Pour ce faire efficacement, JUnit propose plusieurs méthodes qui améliorent la lisibilité et simplifient le processus de test.

Assertions JUnit 5 et 4.13

Dans JUnit 5 et 4.13, le @Test l'annotation avec l'attribut attendu peut être utilisée directement :

@Test
public void testIndexOutOfBoundsException() {
    ArrayList<Object> emptyList = new ArrayList<>();
    assertThrows(IndexOutOfBoundsException.class, () -> emptyList.get(0));
}
Copier après la connexion

AssertJ et Google Truth Assertions

Les bibliothèques d'assertions externes comme AssertJ et Google Truth offrent des méthodes supplémentaires pour les assertions d'exception :

AssertJ :

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

@Test
public void testIndexOutOfBoundsException() {
    ArrayList<Object> emptyList = new ArrayList<>();
    assertThatThrownBy(() -> emptyList.get(0))
        .isInstanceOf(IndexOutOfBoundsException.class);
}
Copier après la connexion

Google Vérité :

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

@Test
public void testIndexOutOfBoundsException() {
    ArrayList<Object> emptyList = new ArrayList<>();
    assertThatCode(() -> emptyList.get(0)).willThrow(IndexOutOfBoundsException.class);
}
Copier après la connexion

Assertions JUnit pré-4.13 (obsolètes)

Pour les versions JUnit antérieures à 4.13, une approche plus lourde consistait à vérifier manuellement l'exception dans un bloc try-catch :

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

Cette approche est obsolète et moins idiomatique que les méthodes susmentionnées. Reportez-vous à la [JUnit Test-FAQ](https://junit.org/junit4/faq.html) pour plus de détails.

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