By Pankaj Kumar
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.
Java and Python Developer for 20+ years, Open Source Enthusiast, Founder of https://www.askpython.com/, https://www.linuxfordevices.com/, and JournalDev.com (acquired by DigitalOcean). Passionate about writing technical articles and sharing knowledge with others. Love Java, Python, Unix and related technologies. Follow my X @PankajWebDev
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
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
Full documentation for every DigitalOcean product.
The Wave has everything you need to know about building a business, from raising funding to marketing your product.
Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.
New accounts only. By submitting your email you agree to our Privacy Policy
Scale up as you grow — whether you're running one virtual machine or ten thousand.
Sign up and get $200 in credit for your first 60 days with DigitalOcean.*
*This promotional offer applies to new accounts only.