fix: Without `@DirtiesContext` the app is not teared down correctly
authorKai Moritz <kai@juplo.de>
Sun, 18 Feb 2024 19:12:19 +0000 (20:12 +0100)
committerKai Moritz <kai@juplo.de>
Mon, 19 Feb 2024 13:24:22 +0000 (14:24 +0100)
* `StorageStrategy` depends on Spring to call the method
  `ChatBackendApplication#onExit()`, that is annotated with `@PreDestroy`.
* If this method is not called, the strategy is not applied, which leads
  to errors in the integration-tests.
* This happens, if all tests are run through Maven, because Spring
  recycles the application-context and only tears down the context after
  all tests have run.
* The addition of `@DirtiesContext` on those tests forces Spring to tear
  down the application completely after each so annotated test.
* Hence, the method is called as expected, which fixes the described
  errors.

src/test/java/de/juplo/kafka/chat/backend/AbstractConfigurationIT.java

index 41618e5..21605bc 100644 (file)
@@ -9,6 +9,7 @@ import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.web.server.LocalServerPort;
 import org.springframework.http.MediaType;
+import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.web.reactive.server.WebTestClient;
 import org.testcontainers.shaded.org.awaitility.Awaitility;
 
@@ -22,6 +23,7 @@ import static org.hamcrest.Matchers.endsWith;
 
 
 @Slf4j
+@DirtiesContext
 public abstract class AbstractConfigurationIT
 {
   final static String EXISTING_CHATROOM = "5c73531c-6fc4-426c-adcb-afc5c140a0f7";