diff --git a/testing-modules/spring-testing/pom.xml b/testing-modules/spring-testing/pom.xml index 6f2700e2df..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 @@ -15,18 +16,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 @@ -44,7 +53,7 @@ LATEST - org.springframework + org.springframework spring-webmvc ${spring.version} @@ -64,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/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..f4fba1f310 --- /dev/null +++ b/testing-modules/spring-testing/src/main/java/com/baeldung/dirtiescontext/UserCache.java @@ -0,0 +1,28 @@ +package com.baeldung.dirtiescontext; + +import java.util.HashSet; +import java.util.Set; + +import org.springframework.stereotype.Component; + +import lombok.Getter; + +@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/DirtiesContextIntegrationTest.java b/testing-modules/spring-testing/src/test/java/com/baeldung/dirtiescontext/DirtiesContextIntegrationTest.java new file mode 100644 index 0000000000..f3e7b8c228 --- /dev/null +++ b/testing-modules/spring-testing/src/test/java/com/baeldung/dirtiescontext/DirtiesContextIntegrationTest.java @@ -0,0 +1,49 @@ +package com.baeldung.dirtiescontext; + +import org.junit.jupiter.api.MethodOrderer.OrderAnnotation; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Test; +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.junit.jupiter.SpringExtension; + +@TestMethodOrder(OrderAnnotation.class) +@ExtendWith(SpringExtension.class) +@SpringBootTest(classes = SpringDataRestApplication.class) +class DirtiesContextIntegrationTest { + + @Autowired + protected UserCache userCache; + + @Test + @Order(1) + void addJaneDoeAndPrintCache() { + userCache.addUser("Jane Doe"); + userCache.printUserList("addJaneDoeAndPrintCache"); + } + + @Test + @Order(2) + void printCache() { + userCache.printUserList("printCache"); + } + + @DirtiesContext(methodMode = MethodMode.AFTER_METHOD) + @Test + @Order(3) + void addJohnDoeAndPrintCache() { + userCache.addUser("John Doe"); + userCache.printUserList("addJohnDoeAndPrintCache"); + } + + @Test + @Order(4) + void printCacheAgain() { + userCache.printUserList("printCacheAgain"); + } + +}