From cc827908e0080d81bdfd080438472d2406769413 Mon Sep 17 00:00:00 2001 From: at508 Date: Sun, 22 Sep 2019 22:46:13 -0400 Subject: [PATCH 1/4] [BAEL-2998] - Adding example for @DirtiesContext --- testing-modules/spring-testing/pom.xml | 10 ++++- .../SpringDataRestApplication.java | 13 ++++++ .../com/baeldung/dirtiescontext/User.java | 9 ++++ .../baeldung/dirtiescontext/UserCache.java | 30 ++++++++++++++ .../dirtiescontext/DirtiesContextTest.java | 41 +++++++++++++++++++ 5 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 testing-modules/spring-testing/src/main/java/com/baeldung/dirtiescontext/SpringDataRestApplication.java create mode 100644 testing-modules/spring-testing/src/main/java/com/baeldung/dirtiescontext/User.java create mode 100644 testing-modules/spring-testing/src/main/java/com/baeldung/dirtiescontext/UserCache.java create mode 100644 testing-modules/spring-testing/src/test/java/com/baeldung/dirtiescontext/DirtiesContextTest.java diff --git a/testing-modules/spring-testing/pom.xml b/testing-modules/spring-testing/pom.xml index 6f2700e2df..bb7d54218a 100644 --- a/testing-modules/spring-testing/pom.xml +++ b/testing-modules/spring-testing/pom.xml @@ -15,18 +15,26 @@ - org.hamcrest java-hamcrest ${hamcrest.version} + + org.projectlombok + lombok + ${lombok.version} + provided + + org.springframework.boot spring-boot-starter LATEST + + org.springframework.boot spring-boot-starter-test diff --git a/testing-modules/spring-testing/src/main/java/com/baeldung/dirtiescontext/SpringDataRestApplication.java b/testing-modules/spring-testing/src/main/java/com/baeldung/dirtiescontext/SpringDataRestApplication.java new file mode 100644 index 0000000000..ab784532a7 --- /dev/null +++ b/testing-modules/spring-testing/src/main/java/com/baeldung/dirtiescontext/SpringDataRestApplication.java @@ -0,0 +1,13 @@ +package com.baeldung.dirtiescontext; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SpringDataRestApplication { + + public static void main(String[] args) { + SpringApplication.run(SpringDataRestApplication.class, args); + } + +} diff --git a/testing-modules/spring-testing/src/main/java/com/baeldung/dirtiescontext/User.java b/testing-modules/spring-testing/src/main/java/com/baeldung/dirtiescontext/User.java new file mode 100644 index 0000000000..4d453c5e91 --- /dev/null +++ b/testing-modules/spring-testing/src/main/java/com/baeldung/dirtiescontext/User.java @@ -0,0 +1,9 @@ +package com.baeldung.dirtiescontext; + +public class User { + + String firstName; + + String lastName; + +} diff --git a/testing-modules/spring-testing/src/main/java/com/baeldung/dirtiescontext/UserCache.java b/testing-modules/spring-testing/src/main/java/com/baeldung/dirtiescontext/UserCache.java new file mode 100644 index 0000000000..f03eee3bb8 --- /dev/null +++ b/testing-modules/spring-testing/src/main/java/com/baeldung/dirtiescontext/UserCache.java @@ -0,0 +1,30 @@ +package com.baeldung.dirtiescontext; + +import java.util.HashSet; +import java.util.Set; + +import org.springframework.stereotype.Component; + +import lombok.Getter; +import lombok.ToString; + +@ToString +@Component +public class UserCache { + + @Getter + private Set userList = new HashSet<>(); + + public boolean addUser(String user) { + return userList.add(user); + } + + public boolean removeUser(String user) { + return userList.remove(user); + } + + public void printUserList(String message) { + System.out.println(message + ": " + userList); + } + +} \ No newline at end of file diff --git a/testing-modules/spring-testing/src/test/java/com/baeldung/dirtiescontext/DirtiesContextTest.java b/testing-modules/spring-testing/src/test/java/com/baeldung/dirtiescontext/DirtiesContextTest.java new file mode 100644 index 0000000000..6248f758ce --- /dev/null +++ b/testing-modules/spring-testing/src/test/java/com/baeldung/dirtiescontext/DirtiesContextTest.java @@ -0,0 +1,41 @@ +package com.baeldung.dirtiescontext; + +import org.junit.jupiter.api.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.annotation.DirtiesContext.MethodMode; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@SpringBootTest(classes = SpringDataRestApplication.class) +class DirtiesContextTest { + + @Autowired + protected UserCache userCache; + + @DirtiesContext(methodMode = MethodMode.AFTER_METHOD) + @Test + void testOne() { + userCache.addUser("John Doe"); + userCache.printUserList("Test One"); + } + + @Test + void testTwo() { + userCache.printUserList("Test Two"); + } + + @Test + void testThree() { + userCache.addUser("Jane Doe"); + userCache.printUserList("Test Three"); + } + + @Test + void testFour() { + userCache.printUserList("Test Four"); + } + +} From bb71b1ec070ff5ec2d2edc4960166074825235b5 Mon Sep 17 00:00:00 2001 From: at508 Date: Mon, 23 Sep 2019 07:04:22 -0400 Subject: [PATCH 2/4] [BAEL-2998] - Updating unit test name to match convention --- ...rtiesContextTest.java => DirtiesContextIntegrationTest.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename testing-modules/spring-testing/src/test/java/com/baeldung/dirtiescontext/{DirtiesContextTest.java => DirtiesContextIntegrationTest.java} (96%) diff --git a/testing-modules/spring-testing/src/test/java/com/baeldung/dirtiescontext/DirtiesContextTest.java b/testing-modules/spring-testing/src/test/java/com/baeldung/dirtiescontext/DirtiesContextIntegrationTest.java similarity index 96% rename from testing-modules/spring-testing/src/test/java/com/baeldung/dirtiescontext/DirtiesContextTest.java rename to testing-modules/spring-testing/src/test/java/com/baeldung/dirtiescontext/DirtiesContextIntegrationTest.java index 6248f758ce..b4f3fa773f 100644 --- a/testing-modules/spring-testing/src/test/java/com/baeldung/dirtiescontext/DirtiesContextTest.java +++ b/testing-modules/spring-testing/src/test/java/com/baeldung/dirtiescontext/DirtiesContextIntegrationTest.java @@ -10,7 +10,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = SpringDataRestApplication.class) -class DirtiesContextTest { +class DirtiesContextIntegrationTest { @Autowired protected UserCache userCache; From e25f50fa1b0445b73b3bd1675435d1485866cb95 Mon Sep 17 00:00:00 2001 From: at508 Date: Thu, 26 Sep 2019 22:58:21 -0400 Subject: [PATCH 3/4] [BAEL-2998] - rearranging test order --- .../baeldung/dirtiescontext/UserCache.java | 2 -- .../DirtiesContextIntegrationTest.java | 33 ++++++++++--------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/testing-modules/spring-testing/src/main/java/com/baeldung/dirtiescontext/UserCache.java b/testing-modules/spring-testing/src/main/java/com/baeldung/dirtiescontext/UserCache.java index f03eee3bb8..f4fba1f310 100644 --- a/testing-modules/spring-testing/src/main/java/com/baeldung/dirtiescontext/UserCache.java +++ b/testing-modules/spring-testing/src/main/java/com/baeldung/dirtiescontext/UserCache.java @@ -6,9 +6,7 @@ import java.util.Set; import org.springframework.stereotype.Component; import lombok.Getter; -import lombok.ToString; -@ToString @Component public class UserCache { diff --git a/testing-modules/spring-testing/src/test/java/com/baeldung/dirtiescontext/DirtiesContextIntegrationTest.java b/testing-modules/spring-testing/src/test/java/com/baeldung/dirtiescontext/DirtiesContextIntegrationTest.java index b4f3fa773f..7fad754b8f 100644 --- a/testing-modules/spring-testing/src/test/java/com/baeldung/dirtiescontext/DirtiesContextIntegrationTest.java +++ b/testing-modules/spring-testing/src/test/java/com/baeldung/dirtiescontext/DirtiesContextIntegrationTest.java @@ -1,13 +1,16 @@ package com.baeldung.dirtiescontext; +import org.junit.FixMethodOrder; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; +import org.junit.runners.MethodSorters; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.annotation.DirtiesContext.MethodMode; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +@FixMethodOrder(MethodSorters.NAME_ASCENDING) @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = SpringDataRestApplication.class) class DirtiesContextIntegrationTest { @@ -15,27 +18,27 @@ class DirtiesContextIntegrationTest { @Autowired protected UserCache userCache; + @Test + void testA() { + userCache.addUser("Jane Doe"); + userCache.printUserList("Test A"); + } + + @Test + void testB() { + userCache.printUserList("Test B"); + } + @DirtiesContext(methodMode = MethodMode.AFTER_METHOD) @Test - void testOne() { + void testC() { userCache.addUser("John Doe"); - userCache.printUserList("Test One"); + userCache.printUserList("Test C"); } @Test - void testTwo() { - userCache.printUserList("Test Two"); - } - - @Test - void testThree() { - userCache.addUser("Jane Doe"); - userCache.printUserList("Test Three"); - } - - @Test - void testFour() { - userCache.printUserList("Test Four"); + void testD() { + userCache.printUserList("Test D"); } } From 4881c701fd60ba7daad0d7578f2cfce8588d1ce1 Mon Sep 17 00:00:00 2001 From: at508 Date: Sun, 29 Sep 2019 23:39:09 -0400 Subject: [PATCH 4/4] [BAEL-2998] - ordering and renaming tests for @DirtiesContext example --- testing-modules/spring-testing/pom.xml | 22 ++++++++++--- .../DirtiesContextIntegrationTest.java | 33 +++++++++++-------- 2 files changed, 36 insertions(+), 19 deletions(-) diff --git a/testing-modules/spring-testing/pom.xml b/testing-modules/spring-testing/pom.xml index bb7d54218a..8a76dc903c 100644 --- a/testing-modules/spring-testing/pom.xml +++ b/testing-modules/spring-testing/pom.xml @@ -1,5 +1,6 @@ - + 4.0.0 org.baeldung spring-testing @@ -21,7 +22,7 @@ ${hamcrest.version} - + org.projectlombok lombok ${lombok.version} @@ -33,7 +34,7 @@ spring-boot-starter LATEST - + org.springframework.boot @@ -52,7 +53,7 @@ LATEST - org.springframework + org.springframework spring-webmvc ${spring.version} @@ -72,6 +73,17 @@ ${junit.jupiter.version} test + + org.junit.jupiter + junit-jupiter-engine + ${junit.jupiter.version} + + + org.junit.jupiter + junit-jupiter-api + ${junit.jupiter.version} + test + org.awaitility awaitility diff --git a/testing-modules/spring-testing/src/test/java/com/baeldung/dirtiescontext/DirtiesContextIntegrationTest.java b/testing-modules/spring-testing/src/test/java/com/baeldung/dirtiescontext/DirtiesContextIntegrationTest.java index 7fad754b8f..f3e7b8c228 100644 --- a/testing-modules/spring-testing/src/test/java/com/baeldung/dirtiescontext/DirtiesContextIntegrationTest.java +++ b/testing-modules/spring-testing/src/test/java/com/baeldung/dirtiescontext/DirtiesContextIntegrationTest.java @@ -1,17 +1,18 @@ package com.baeldung.dirtiescontext; -import org.junit.FixMethodOrder; +import org.junit.jupiter.api.MethodOrderer.OrderAnnotation; +import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; -import org.junit.runner.RunWith; -import org.junit.runners.MethodSorters; +import org.junit.jupiter.api.TestMethodOrder; +import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.annotation.DirtiesContext.MethodMode; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.junit.jupiter.SpringExtension; -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -@RunWith(SpringJUnit4ClassRunner.class) +@TestMethodOrder(OrderAnnotation.class) +@ExtendWith(SpringExtension.class) @SpringBootTest(classes = SpringDataRestApplication.class) class DirtiesContextIntegrationTest { @@ -19,26 +20,30 @@ class DirtiesContextIntegrationTest { protected UserCache userCache; @Test - void testA() { + @Order(1) + void addJaneDoeAndPrintCache() { userCache.addUser("Jane Doe"); - userCache.printUserList("Test A"); + userCache.printUserList("addJaneDoeAndPrintCache"); } @Test - void testB() { - userCache.printUserList("Test B"); + @Order(2) + void printCache() { + userCache.printUserList("printCache"); } @DirtiesContext(methodMode = MethodMode.AFTER_METHOD) @Test - void testC() { + @Order(3) + void addJohnDoeAndPrintCache() { userCache.addUser("John Doe"); - userCache.printUserList("Test C"); + userCache.printUserList("addJohnDoeAndPrintCache"); } @Test - void testD() { - userCache.printUserList("Test D"); + @Order(4) + void printCacheAgain() { + userCache.printUserList("printCacheAgain"); } }