Maison >Java >javaDidacticiel >Comment « assertThrows() » de JUnit 5 simplifie-t-il les tests d'exception ?

Comment « assertThrows() » de JUnit 5 simplifie-t-il les tests d'exception ?

DDD
DDDoriginal
2024-11-19 14:51:03450parcourir

How Does JUnit 5's `assertThrows()` Simplify Exception Testing?

JUnit 5 : assertion d'exception améliorée avec assertThrows()

Dans JUnit 5, affirmer qu'une méthode lève une exception est devenu plus flexible et efficace avec l'introduction du Méthode assertThrows(). Cette méthode élimine le besoin de l'approche fastidieuse de @Rule, en particulier lorsqu'il s'agit de plusieurs exceptions attendues au sein d'un seul test.

Utilisation de assertThrows()

La méthode assertThrows() accepte plusieurs arguments :

  • La classe d'exception attendue (par exemple, MyException.class)
  • Une expression lambda qui exécute le code censé lever une exception
  • Un message facultatif à afficher si l'exception n'est pas levée
import static org.junit.jupiter.api.Assertions.assertThrows;

@Test
void exceptionTesting() {
    MyException thrown = assertThrows(
        MyException.class,
        () -> myObject.doThing(),
        "Expected doThing() to throw, but it didn't"
    );

    assertTrue(thrown.getMessage().contains("Stuff"));
}

Dans cet exemple, le test attend la méthode doThing() pour lancer une MyException avec un message contenant "Stuff". Si l'exception n'est pas levée ou si le message ne correspond pas, le test échouera.

Avantages par rapport à @Rule

Par rapport à @Rule, assertThrows() offre plusieurs avantages :

  • Simplicité : Il réduit le code passe-partout associé à la configuration et au démontage d'une règle, en effectuant les tests plus lisible.
  • Flexibilité : Il vous permet de tester plusieurs exceptions au sein du même test, réduisant ainsi le besoin de tests séparés.
  • Messages d'erreur améliorés : En cas d'échec du test, assertThrows() fournit un message d'erreur plus contextualisé, spécifiant la classe d'exception attendue et le message qu'elle doit contain.

Conclusion

La méthode assertThrows() de JUnit 5 offre aux développeurs un moyen concis et efficace d'affirmer le lancement d'exceptions dans leurs tests. En rationalisant le processus et en fournissant des messages d'erreur améliorés, assertThrows() rend les tests d'exceptions plus fiables et plus faciles à maintenir.

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