JUnit Assert Exception – JUnit 5 and JUnit 4

Filed Under: JUnit

We can test expected exceptions using JUnit 5 assertThrows assertion. This JUnit assertion method returns the thrown exception, so we can use it to assert exception message too.

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();

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 {

	public ExpectedException thrown = ExpectedException.none();

	public void test1() throws Exception {
		Foo foo = new Foo();
		thrown.expectMessage("Exception Message");

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.


  1. sharath says:

    import org.junit.Test;

    public class ArithmaticTest {

    public String message = “Saurabh”;

    JUnitMessage junitMessage = new JUnitMessage(message);

    @Test(expected = ArithmeticException.class)
    public void testJUnitMessage(){

    System.out.println(“Junit Message is printing “);


    public void testJUnitHiMessage(){
    message=”Hi!” + message;
    System.out.println(“Junit Message is printing “);
    assertEquals(message, junitMessage.printMessage());


    In the code above, JUnitMessage is showing an error, can you tell me why it is not working. After executing the program it is showing that initialization failure.

    1. satish says:

      Hi sharath,

      please create a JUnitMessage class like below. It will work.

      public class JUnitMessage {

      public String message;

      public JUnitMessage(String message) {
      this.message = message;

      public void printMessage() {


      public String printHiMessage() {

      return “Hi !” + message;

Comments are closed.

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors