Parallel Test Execution for JUnit 5

This commit is contained in:
Mladen Savic 2021-10-01 13:04:07 +02:00
parent be966d6d62
commit ef8e084d6d
7 changed files with 136 additions and 0 deletions

6
junit5/README.md Normal file
View File

@ -0,0 +1,6 @@
## JUnit5
This module contains articles about the JUnit 5
### Relevant Articles:

36
junit5/pom.xml Normal file
View File

@ -0,0 +1,36 @@
<?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>
<artifactId>junit5</artifactId>
<name>junit5</name>
<parent>
<artifactId>parent-modules</artifactId>
<groupId>com.baeldung</groupId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,21 @@
package com.baeldung.junit5;
import org.junit.jupiter.api.Test;
public class A_UnitTest {
@Test
public void first() throws Exception{
System.out.println("Test A first() start => " + Thread.currentThread().getName());
Thread.sleep(500);
System.out.println("Test A first() end => " + Thread.currentThread().getName());
}
@Test
public void second() throws Exception{
System.out.println("Test A second() start => " + Thread.currentThread().getName());
Thread.sleep(500);
System.out.println("Test A second() end => " + Thread.currentThread().getName());
}
}

View File

@ -0,0 +1,23 @@
package com.baeldung.junit5;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.parallel.Execution;
import org.junit.jupiter.api.parallel.ExecutionMode;
public class B_UnitTest {
@Test
public void first() throws Exception{
System.out.println("Test B first() start => " + Thread.currentThread().getName());
Thread.sleep(500);
System.out.println("Test B first() end => " + Thread.currentThread().getName());
}
@Test
public void second() throws Exception{
System.out.println("Test B second() start => " + Thread.currentThread().getName());
Thread.sleep(500);
System.out.println("Test B second() end => " + Thread.currentThread().getName());
}
}

View File

@ -0,0 +1,45 @@
package com.baeldung.junit5;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.parallel.ResourceLock;
import java.util.ArrayList;
import java.util.List;
public class C_UnitTest {
private List<String> resources;
@BeforeEach
void before() {
resources = new ArrayList<>();
resources.add("test");
}
@AfterEach
void after() {
resources.clear();
}
@Test
@ResourceLock(value = "resources")
public void first() throws Exception {
System.out.println("Test C first() start => " + Thread.currentThread().getName());
resources.add("first");
System.out.println(resources);
Thread.sleep(500);
System.out.println("Test C first() end => " + Thread.currentThread().getName());
}
@Test
@ResourceLock(value = "resources")
public void second() throws Exception {
System.out.println("Test C second() start => " + Thread.currentThread().getName());
resources.add("second");
System.out.println(resources);
Thread.sleep(500);
System.out.println("Test C second() end => " + Thread.currentThread().getName());
}
}

View File

@ -0,0 +1,4 @@
junit.jupiter.execution.parallel.enabled = true
junit.jupiter.execution.parallel.config.strategy=dynamic
junit.jupiter.execution.parallel.mode.default = concurrent
junit.jupiter.execution.parallel.mode.classes.default = concurrent

View File

@ -472,6 +472,7 @@
<module>json-path</module> <module>json-path</module>
<module>jsoup</module> <module>jsoup</module>
<module>jta</module> <module>jta</module>
<module>junit5</module>
<module>kubernetes</module> <module>kubernetes</module>
<module>ksqldb</module> <module>ksqldb</module>
<!-- <module>lagom</module> --> <!-- Not a maven project --> <!-- <module>lagom</module> --> <!-- Not a maven project -->