Maison >Java >javaDidacticiel >Comment puis-je tester efficacement la gestion des exceptions dans JUnit ?

Comment puis-je tester efficacement la gestion des exceptions dans JUnit ?

DDD
DDDoriginal
2024-12-20 05:49:10572parcourir

How Can I Effectively Test for Exception Handling in JUnit?

Test de la gestion des exceptions dans JUnit

Dans JUnit, tester si une exception spécifique est levée peut être réalisé de plusieurs manières.

JUnit 5 et 4.13

L'annotation @Test prend désormais en charge l'attribut attendu, ce qui vous permet de spécifier l'exception attendue tapez :

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

AssertJ ou Google Truth

Les bibliothèques d'assertions tierces comme AssertJ et Google Truth fournissent une syntaxe plus concise pour les tests d'exception :

// AssertJ
assertThatThrownBy(() -> foo.doStuff()).isInstanceOf(IndexOutOfBoundsException.class);

// Google Truth
assertWithMessage("Expected IndexOutOfBoundsException").thatExceptionOfType(IndexOutOfBoundsException.class).isThrownBy(() -> foo.doStuff());

JUnit < ;= 4.12

Pour JUnit 4.12 et versions antérieures, il existe plusieurs options :

  1. Drapeau booléen : Semblable au code de la question d'origine.
  2. @Rule : L'annotation @Rule peut être utilisé pour créer une règle de test qui affirme qu'une exception est levée.
  3. Correspondants personnalisés : Créer un matcher Hamcrest personnalisé pour vérifier si une exception d'un type spécifique a été levée.

Référez-vous à la FAQ-test JUnit pour plus de détails sur ces options.

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