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

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

Barbara Streisand
Barbara Streisandoriginal
2024-11-19 22:50:03356parcourir

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

Assertions d'exceptions exceptionnelles dans JUnit 5

Dans JUnit 5, affirmer qu'une méthode lève une exception a été simplifié avec l'introduction de assertThrows( ). Cette méthode fournit un moyen plus concis et plus pratique de vérifier le comportement des exceptions, en particulier lorsque plusieurs exceptions sont attendues dans le même test.

Auparavant, les développeurs s'appuyaient sur l'annotation @Rule pour vérifier les exceptions, mais cette approche avait des limites. lorsque plusieurs exceptions étaient impliquées. assertThrows(), quant à lui, permet des tests d'exception flexibles et personnalisables.

En tirant parti des lambdas Java 8, assertThrows() permet aux développeurs d'écrire des assertions de test concises et expressives :

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, assertThrows() est utilisé pour vérifier si la méthode doThing() renvoie une MyException lorsqu'elle est invoquée. L'expression lambda passée comme deuxième argument définit le code censé lever l'exception. Le troisième argument fournit un message facultatif à afficher en cas d'échec de l'assertion.

En utilisant assertThrows(), les développeurs peuvent rationaliser leur code de test d'exception, affirmer facilement plusieurs exceptions au sein d'un seul test et fournir des informations claires et informatives. messages d'erreur lorsque les assertions échouent.

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