Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

What is JUnit 5?

JUnit is one of the most popular

...

unit-testing

...

frameworks

...

in

...

the

...

Java

...

ecosystem.

What is JUnit 5?

Unlike previous versions of JUnit, JUnit 5 is composed of several different modules from three different sub-projects.

...

  • JUnit Platform - foundation layer which enables different testing frameworks to be launched on the JVM

  • Junit Jupiter - is the JUnit 5 test framework which is launched by the JUnit Platform

  • JUnit Vintage - legacy TestEngine which runs older tests

Requirements:

Note

JUnit 5 needs already installed to run:

  • at least Java 8
  • Maven / Gradle  (In this tutorial we'll be using Maven)

...

If you want to know more about JUnit, refer to the official documentation

 Example project structure 

This is the basic template: 


Code Block
.
├── pom.xml
└── src
    ├── main
    │   ├── java
    │   │   └── SourceCodeClass.java
    │   └── resources
    └── test
        └── java
            └── TestClass.java


pom.xml

There is  pom.xml file, which is config file for our Java project using Maven.

...

Code Block
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>JUnit5_Overview<</artifactId>
    <version>1.0-SNAPSHOT</version>

// This is depedency that we need to add to usew JUnit5 in our project
    <dependencies>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>5.7.2</version>
            <scope>test</scope>
        </dependency>
    </dependencies>


    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>


// This plugins enables running tests from shell
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
            </plugin>
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.0.0-M1</version>
            </plugin>
        </plugins>
    </build>

</project>


Maven Surefire Plugin is used during the test phase of the build lifecycle to execute the unit tests of an application. It can be used with JUnit, TestNG or other testing frameworks. 

By default, the Surefire Plugin will automatically include all test classes with the following wildcard patterns, and execute them as unit tests:

Pattern
**/Test*.java
**/*Test.java
**/*Tests.java
**/*TestCase.java

main / test folders

Inside Overview/src  folder you can see two subfolders:

...

  • test - here are test classes, that check whether source code is working properly. This is where our JUnit5 is used → TestClass.java 


    A test method is a method that fulfills these three requirements:

    • A test method isn't private or static
    • A test method must not return anything. In other words, its return Its return type must be void.
    • A test method must be annotated with the @Test annotation.
    Code Block
    // We import jupiter to our class to use proper annotation
    import org.junit.jupiter.api.*;
    
    // This is optional annotation that is used to increase readability 
    @DisplayName("JUnit 5 Example class")
    class TestClass {
    
         // This is obligatory annotation on test methods
        @Test
        void exampleTest() {
            System.out.println("example test method");
        }
    
    }


...