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.
JUnit: 4.12
Les deux suivants sont décrits.
@ Test
ʻespected` dans
@ Rule` et spécifiez l'exception à lever dans la méthode de test.@ 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
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
// ...
}
Il est également paresseux de ne pas lire correctement la description du code ...
@ Rule
, vous pouvez écrire des tests plus efficacement. est une classe d'implémentation de
TestRule, mais qui est
TestRule`?Recommended Posts