[JAVA] [JUnit] Tester l'exception levée

Teste les exceptions levées lors de l'écriture de tests unitaires dans du code JUnit pour Java. J'ai fait des recherches il y a longtemps, mais quand je suis allé au front-end pendant un moment, Quand je suis revenu, on m'a demandé «Comment ça va?», Donc je vais le résumer sous forme de mémorandum.

Environnement de vérification

JUnit: 4.12

Méthode

Les deux suivants sont décrits.

  1. Spécifiez la classe d'exception à lancer en utilisant l'option @ Test ʻespected`
  2. Spécifiez ʻExpectedException dans @ Rule` et spécifiez l'exception à lever dans la méthode de test.

Spécifiez la classe d'exception à lever à l'aide de l'option @ Test ʻexpected`

C'est simple, mais cela ne valide que la classe d'exception qui est levée. L'exemple de code est le suivant.

@Test(expected = IllegalArgumentException.class)
public void createAccountUserNameIsEmpty() {
    // followings are test-code should throw IllegalArgumentException
    // ...
}

Il est écrit dans le code de l'option ʻattendu, mais pour vérifier le message etc. Utilisons ʻExpectedException décrit plus tard. Vous pouvez également valider Causé par des exceptions. L'article suivant décrit la validation de Caused by exceptions. https://qiita.com/komiya_atsushi/items/082d6a71e475a613338a

Spécifiez ʻExpectedException dans @ Rule` et spécifiez l'exception à lever dans la méthode de test.

Comme je l'ai mentionné un peu plus tôt, vous pouvez valider les messages d'exception ainsi que les classes d'exceptions levées. L'exemple de code est le suivant.

//Assurez-vous de le rendre public plutôt que de l'utiliser
//Parce que le constructeur est privé, il ne peut pas être simplement nouveau.none()Créer un objet par
// none()L'implication est que la cible de test ne lève pas nécessairement une exception.
@Rule
public ExpectedException expectedException = ExpectedException.none();

@Test
public void createAccountUserNameIsEmpty() {
    //Validation de classe d'exception
    expectedException.expect(IllegalArgumentException.class);
    //Validation des messages d'exception
    expectedException.expectMessage("Failed to create an account; user name is empty.");
    // followings are test-code should throw IllegalArgumentException
    // ...
}

Je suis curieux, mais je n'ai pas vérifié

Il est également paresseux de ne pas lire correctement la description du code ...

Recommended Posts

[JUnit] Tester l'exception levée
Lancement du test JUnit essayez quelque chose
Faites un test unitaire avec Junit.
Obtenez le nom du scénario de test dans la classe de test JUnit
Tester le contenu d'un fichier Excel avec JUnit
[Java] Exemple de cas de test JUnit 4
[Spring] Test de sortie d'exception du contrôleur
Tester les méthodes privées dans JUnit
Tester les méthodes privées dans JUnit
Vérifiez le comportement lorsque l'exception spécifiée par attendu dans l'annotation JUnit 4 @Test se produit ou ne se produit pas.
[Spring Boot] Jusqu'à ce que @Autowired soit exécuté dans la classe de test [JUnit5]
Le test de paramétrage JUnit 5 est super pratique
Sortie du rapport de test JUnit dans Maven
[Java] Tester des méthodes privées avec JUnit
Quelles sont les règles de JUnit?
Contrôleur de cadre de test Spring avec Junit