In this tutorial we will dive into JUnit5 framework even more basing on very simple Calculator project that will grow with us during tutorial.
...
.
Table of Contents |
---|
...
Info |
---|
The tutorial repository can be found here: |
Project Structure:
Code Block |
---|
. ├── pom.xml └── src ├── main │ └── java │ └── Calculator.java └── test └── java └── CalculatorTest.java |
...
Our Calculator.java
look like this:
As you can see it has only divide() method, that checks if b is equal to 0. If it is, it throws an exception.
Code Block |
---|
public class Calculator {
static Double divide(Double a, Double b) {
if (b != 0) {
return a / b;
}
else{
throw new ArithmeticException("Division by 0 is impossible!");
}
}
public static void main(String[] args) {
System.out.printf(Calculator.divide(8.0,2.0).toString());
}
} |
So let's write first simple test, but before that we need to know what the assertion are.
Assertions
Assertion is a statement in java. It can be used to test your assumptions about the program.
JUnit 5 assertions help in validating the expected output with actual output of a testcase. (The order is always the same!!)
List of every possible assertions is here: https://junit.org/junit5/docs/5.7.2/api/org.junit.jupiter.api/org/junit/jupiter/api/Assertions.html
So our test class looks like this:
Code Block |
---|
@Test @DisplayName("Divide two finite numbers") void divideTest() { final double EXPECTED = 4; final double ACTUAL = Calculator.divide(8.0,2.0); assertEquals(EXPECTED,ACTUAL); } |
Exceptions
To ensure our error handling works correctly, we can verify that a piece of code throws a specific exception under certain conditions.
This can be done with the assertThrows()
method in JUnit 5: If we catch this thrown exception test is passed.
Code Block |
---|
@Test @DisplayName("Divide by 0") void divideBy0ExpectedExceptionTest() { assertThrows(ArithmeticException.class, () -> { Calculator.divide(8.0,0.0); }); |