diff --git a/junit5/README.md b/junit5/README.md
new file mode 100644
index 0000000000..ad16ad164d
--- /dev/null
+++ b/junit5/README.md
@@ -0,0 +1,6 @@
+## JUnit5
+
+This module contains articles about the JUnit 5
+
+### Relevant Articles:
+
diff --git a/junit5/pom.xml b/junit5/pom.xml
new file mode 100644
index 0000000000..b9804408a2
--- /dev/null
+++ b/junit5/pom.xml
@@ -0,0 +1,36 @@
+
+
+
+ 4.0.0
+ junit5
+ junit5
+
+
+ parent-modules
+ com.baeldung
+ 1.0.0-SNAPSHOT
+
+
+
+ 8
+ 8
+
+
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+ 5.8.1
+ test
+
+
+ org.junit.jupiter
+ junit-jupiter-engine
+ 5.8.1
+ test
+
+
+
+
\ No newline at end of file
diff --git a/junit5/src/test/java/com/baeldung/junit5/A_UnitTest.java b/junit5/src/test/java/com/baeldung/junit5/A_UnitTest.java
new file mode 100644
index 0000000000..e4ba59b22d
--- /dev/null
+++ b/junit5/src/test/java/com/baeldung/junit5/A_UnitTest.java
@@ -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());
+ }
+
+}
diff --git a/junit5/src/test/java/com/baeldung/junit5/B_UnitTest.java b/junit5/src/test/java/com/baeldung/junit5/B_UnitTest.java
new file mode 100644
index 0000000000..2b195d2551
--- /dev/null
+++ b/junit5/src/test/java/com/baeldung/junit5/B_UnitTest.java
@@ -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());
+ }
+
+}
diff --git a/junit5/src/test/java/com/baeldung/junit5/C_UnitTest.java b/junit5/src/test/java/com/baeldung/junit5/C_UnitTest.java
new file mode 100644
index 0000000000..ce545f6bee
--- /dev/null
+++ b/junit5/src/test/java/com/baeldung/junit5/C_UnitTest.java
@@ -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 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());
+ }
+}
diff --git a/junit5/src/test/resources/junit-platform.properties b/junit5/src/test/resources/junit-platform.properties
new file mode 100644
index 0000000000..42100f85da
--- /dev/null
+++ b/junit5/src/test/resources/junit-platform.properties
@@ -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
diff --git a/pom.xml b/pom.xml
index f5ac14a009..8d28669313 100644
--- a/pom.xml
+++ b/pom.xml
@@ -472,6 +472,7 @@
json-path
jsoup
jta
+ junit5
kubernetes
ksqldb