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.
Here is a simple example showing how to assert exception in JUnit 5.
String str = null;
assertThrows(NullPointerException.class, () -> str.length());
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());
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();
}
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.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
While we believe that this content benefits our community, we have not yet thoroughly reviewed it. If you have any suggestions for improvements, please let us know by clicking the “report an issue“ button at the bottom of the tutorial.
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 "); junitMessage.printMessage(); } @Test 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.
- sharath