In this tutorial we will dive into JUnit5 framework even more basing on simple Calculator project that will grow with us during tutorial.
The tutorial repository can be found here:
https://gitlab.eufus.eu/bpogodzinski/ach-tutorials/-/tree/TDD-java/TDD-java/Calculator
Project Structure:
. ├── pom.xml └── src ├── main │ └── java │ └── Calculator.java └── test └── java └── CalculatorTest.java
Our Calculator.java
look like this:
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()); } }
As you can see it has only divide() method, that checks if b is equal to 0. If it is, it throws an exception.
So let's write first simple test:
@Test @DisplayName("Divide two finite numbers") void divideTest() { final double EXPECTED = 4; final double ACTUAL = Calculator.divide(8.0,2.0); assertEquals(EXPECTED,ACTUAL); }
Okey, we see the assert
word, but what is that?
1. 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. To keep things simple, all JUnit Jupiter assertions are static methods in the org.junit.jupiter.Assertions class. 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