anomalies des tests JUnit
- écriture ancienne
@Test
void name() {
boolean hasException = false;
String exceptionMessage = null;
try {
check();
} catch (RuntimeException e) {
hasException = true;
exceptionMessage = e.getMessage();
}
assertEquals("runtime", exceptionMessage);
assertTrue(hasException);
}
void check() {
throw new RuntimeException("runtime");
}
- Longhand (faillible)
la vérification et le type d'exception du message
@Test
void name() {
assertThrows(RuntimeException.class, () -> check(), "aaa");
}
void check() {
throw new RuntimeException("runtime");
}
Ce test nous avons constaté que message de test anormal , mais pas en mesure de vivre.
Pa Pa source
Constaté que message de test réellement la consommation ne sont pas nouvelles inhabituelle, mais l'exception ne devrait, et il n'y a pas de défaut à la consommation.
2.1 longhand
@Test
void name() {
final RuntimeException runtimeException = assertThrows(RuntimeException.class, () -> check());
assertEquals("runtime", runtimeException.getMessage());
}
void check() {
throw new RuntimeException("runtime");
}
3. l'écriture en streaming
@Test
void name() {
assertThatThrownBy(() -> check())
.isInstanceOf(RuntimeException.class)
.hasMessage("runtime");
}
void check() {
throw new RuntimeException("runtime");
}
Personnellement, je pense que le libellé de l'intensité du courant du ressort des plus élégants.