JUnit Tip: Verifying that an Exception with a Particular Message was Thrown
Join the DZone community and get the full member experience.
Join For FreeJUnit has a hidden treasure which makes it easy to do something we have long longed for – namely not only to verify that an exception of a particular type has been thrown but also that its message contains the expected message. The hidden pearl is the @Rule ExpectedException and its JavaDoc documents well how to use it (slightly modified):
import org.junit.*; import org.junit.rules.ExpectedException; public static class HasExpectedException { @Rule public ExpectedException thrown= ExpectedException.none(); @Test public void throwsNothing() { // no exception expected, none thrown: passes. } @Test public void throwsNullPointerExceptionWithMessage() { thrown.expect(NullPointerException.class); thrown.expectMessage("What happened here?"); thrown.expectMessage(allOf(containsString("What"), containsString("here"))); throw new NullPointerException("What happened here?"); } }
(As you might have noticed, it uses Hamcrest matchers; containsString isn’t included directly in junit and thus you’d need junit-dep + hamcrest jars.)
From http://theholyjava.wordpress.com/2011/09/16/junit-tip-verifying-that-an-exception-with-a-particular-message-was-thrown/
Opinions expressed by DZone contributors are their own.
Comments