URL: https://www.progressiverobot.com/junit-assert-exception-expected/

We can test expected exceptions using [JUnit 5](/community/tutorials/junit5-tutorial) assertThrows assertion. This [JUnit assertion](/community/tutorials/junit-assertions) method returns the thrown exception, so we can use it to assert exception message too.

JUnit Assert Exception

assert exception illustration for: JUnit Assert Exception

Here is a simple example showing how to assert exception in JUnit 5.

				
					String str = null;
assertThrows(NullPointerException.class, () -> str.length());
				
			

JUnit 5 Assert Exception Message

Let's say we have a class defined as:

				
					class Foo {
	void foo() throws Exception {
		throw new Exception("Exception Message");
	}
}
				
			

Let's see how we can test exception as well as its message.

				
					Foo foo = new Foo();
Exception exception = assertThrows(Exception.class, () -> foo.foo());
assertEquals("Exception Message", exception.getMessage());
				
			

JUnit 4 Expected Exception

We can use JUnit 4 @Test annotation expected attribute to define the expected exception thrown by the test method.

				
					@Test(expected = Exception.class)
public void test() throws Exception {
	Foo foo = new Foo();
	foo.foo();
}
				
			

JUnit 4 Assert Exception Message

If we want to test exception message, then we will have to use ExpectedException rule. Below is a complete example showing how to test exception as well as exception message.

				
					package com.journaldev.junit4;

import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;

public class JUnit4TestException {

	@Rule
	public ExpectedException thrown = ExpectedException.none();

	@Test
	public void test1() throws Exception {
		Foo foo = new Foo();
		thrown.expect(Exception.class);
		thrown.expectMessage("Exception Message");
		foo.foo();
	}
}
				
			

That's all for a quick roundup on testing expected exceptions in JUnit 5 and JUnit 4.

You can check out more JUnit 5 examples from our GitHub Repository project.