Over a million developers have joined DZone.

JUnit Tip: Verifying that an Exception with a Particular Message was Thrown

DZone's Guide to

JUnit Tip: Verifying that an Exception with a Particular Message was Thrown

· Java Zone ·
Free Resource

Learn how to stop testing everything every sprint and only test the code you’ve changed. Brought to you by Parasoft.

JUnit 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 {
        public ExpectedException thrown= ExpectedException.none();

        public void throwsNothing() {
            // no exception expected, none thrown: passes.

        public void throwsNullPointerExceptionWithMessage() {
                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/

Get the top tips for Java developers and best practices to overcome common challenges. Brought to you by Parasoft.


Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}