- Published on
 
How to Assert an Exception and Message with JUnit5
- Authors
 - Name
 - Yair Mark
 - @yairmark
 
When testing code you often want to test that a particular exception and message are thrown. The JUnit method to do this is Assertions.assertThrows. So to test a NullPointerException is thrown we would use this: Assertions.assertThrows(NullPointerException.class, ()-> {codeThatThrowsNPE;}) One thing not clear from the docs is how to test the exception message?
I came across this answer which clarifies this:
Throwable exceptionThatWasThrown = assertThrows(NullPointerException.class, () -> {
    codeThatThrows;
});
assertThat(exceptionThatWasThrown.getMessage(), equalTo("Message I expected to be thrown"));
And the same thing in Kotlin:
exceptionThatWasThrown: Throwable  = assertThrows(NullPointerException::class.java) {
    codeThatThrows
}
assertThat(exceptionThatWasThrown.message, equalTo("Message I expected to be thrown"))