Maintenant, Junit5 fournit une façon de vérifier les exceptions
Vous pouvez tester à la fois les exceptions générales et les exceptions personnalisées
Un scénario d'exception générale:
ExpectGeneralException.java
public void validateParameters(Integer param ) {
if (param == null) {
throw new NullPointerException("Les paramètres nuls ne sont pas autorisés");
}
}
ExpectGeneralExceptionTest.java
@Test
@DisplayName("Test d'assertion NullPointerException")
void testGeneralException(TestInfo testInfo) {
final ExpectGeneralException generalEx = new ExpectGeneralException();
NullPointerException exception = assertThrows(NullPointerException.class, () -> {
generalEx.validateParameters(null);
});
assertEquals("Les paramètres nuls ne sont pas autorisés", exception.getMessage());
}
Vous pouvez trouver un exemple pour tester CustomException ici : exemple de code d'exception
ExpectCustomException.java
public String constructErrorMessage(String... args) throws InvalidParameterCountException {
if(args.length!=3) {
throw new InvalidParameterCountException("Compteur de paramètres invalide : attendu=3, passé="+args.length);
}else {
String message = "";
for(String arg: args) {
message += arg;
}
return message;
}
}
ExpectCustomExceptionTest.java
@Test
@DisplayName("Test d'assertion d'exception")
void testCustomException(TestInfo testInfo) {
final ExpectCustomException expectEx = new ExpectCustomException();
InvalidParameterCountException exception = assertThrows(InvalidParameterCountException.class, () -> {
expectEx.constructErrorMessage("exemple ","erreur");
});
assertEquals("Compteur de paramètres invalide : attendu=3, passé=2", exception.getMessage());
}
2 votes
Vous pourriez être intéressé par la vérification AssertJ pour vérifier les exceptions car elle est plus flexible que JUnit5
0 votes
Voici un bel exemple sur comment vérifier qu'une exception est lancée dans JUnit4 et JUnit5.
0 votes
Si vous vous attendez à ce que plusieurs méthodes lancent des exceptions dans un même test, c'est une mauvaise pratique de code; vous voulez probablement écrire plusieurs tests, un pour chaque exception lancée