w3resource

Java Test Case: Exception Testing

Java Unit Test: Exercise-2 with Solution

Write a Java test case to verify that a specific exception is thrown when a method is called with invalid input.

Sample Solution:

Java Code:

// ExceptionTest.java
import org.junit.Test;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;

import static org.junit.Assert.*;

public class ExceptionTest {

    // Example class with a method that throws a specific exception
    public class ExampleClass {
        public int divide(int a, int b) {
            if (b == 0) {
                throw new ArithmeticException("Cannot divide by zero");
            }
            return a / b;
        }
    }

    // JUnit test case to verify the specific exception
    @Test(expected = ArithmeticException.class)
    public void testDivideByZero() {
        // Arrange
        ExampleClass example = new ExampleClass();

        // Act
        int result = example.divide(10, 0);

        // Assert (Exception is expected, so nothing to assert)
    }

    // Main function to run JUnit tests
    public static void main(String[] args) {
        Result result = JUnitCore.runClasses(ExceptionTest.class);

        // Check if there are any failures
        if (result.getFailureCount() > 0) {
            System.out.println("Test failed:");

            // Print details of failures
            for (Failure failure : result.getFailures()) {
                System.out.println(failure.toString());
            }
        } else {
            System.out.println("All tests passed successfully.");
        }
    }
}

Sample Output:

All tests passed successfully.

Explanation:

In the exercise above,

  • The "ExampleClass" has a "divide()" method that throws an "ArithmeticException" if the divisor is zero.
  • The "testDivideByZero" JUnit test case uses the @Test annotation with the expected attribute to specify that an "ArithmeticException" is expected to be thrown during the execution of the test.
  • The main() function uses JUnitCore.runClasses(ExceptionTest.class) to run the tests. If any test case fails, it prints details about the failure; otherwise, it prints a success message.

Flowchart:

Flowchart: Java Unit Test: Exception Testing
Flowchart: Java Unit Test: Exception Testing

Java Code Editor:

Improve this sample solution and post your code through Disqus

Previous: Asserting Expected method returns.
Next: Java JUnit Test Case: Test Setup and Teardown.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://w3resource.com/java-exercises/unittest/java-unittest-exercise-2.php