Added an integration-test that tests the exception-handling
authorKai Moritz <kai@juplo.de>
Sat, 19 Sep 2020 12:08:38 +0000 (14:08 +0200)
committerKai Moritz <kai@juplo.de>
Mon, 28 Sep 2020 19:28:00 +0000 (21:28 +0200)
* The integration-test uses WebTestClient to test the exception-handling
* Since this is a real integration-test, the exception-handling behave
  exactly the same way
* The test-setup with the WebTestClient needs an additional dependency, to
  work correctly - without it, the WebTestClient-Bean would not be intanciated
* The added test ExceptionHandlingApplicationIT tests exaclty the same stuff,
  as ExceptionHandlingApplicationTest - this is no good test-design, but it
  serves the intention, to compare the two approaches
* Since Spring-Boot configures the surefire-maven-plugin to ignore all tests,
  that end with IT, the failsafe-maven-plugin has to be added to automatically
  fire the new test - remember: you have to call "mvn verify" to fire IT

pom.xml
src/test/java/de/juplo/demo/ExceptionHandlingApplicationIT.java [new file with mode: 0644]

diff --git a/pom.xml b/pom.xml
index 3c268c3..7ec41c3 100644 (file)
--- a/pom.xml
+++ b/pom.xml
                                </exclusion>
                        </exclusions>
                </dependency>
+               <dependency>
+                       <groupId>org.springframework.boot</groupId>
+                       <artifactId>spring-boot-starter-webflux</artifactId>
+                       <scope>test</scope>
+               </dependency>
        </dependencies>
 
        <build>
                                <groupId>org.springframework.boot</groupId>
                                <artifactId>spring-boot-maven-plugin</artifactId>
                        </plugin>
+                       <plugin>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-failsafe-plugin</artifactId>
+                       </plugin>
                </plugins>
        </build>
 
diff --git a/src/test/java/de/juplo/demo/ExceptionHandlingApplicationIT.java b/src/test/java/de/juplo/demo/ExceptionHandlingApplicationIT.java
new file mode 100644 (file)
index 0000000..042ce4b
--- /dev/null
@@ -0,0 +1,58 @@
+package de.juplo.demo;
+
+import org.junit.jupiter.api.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.reactive.AutoConfigureWebTestClient;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.web.reactive.server.WebTestClient;
+
+import java.net.URI;
+
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
+@AutoConfigureWebTestClient
+class ExceptionHandlingApplicationIT {
+       private final static Logger LOG =
+                       LoggerFactory.getLogger(ExceptionHandlingApplicationIT.class);
+
+       @Autowired
+       WebTestClient client;
+
+
+       @Test
+       void contextLoads() throws Exception {
+       }
+
+       @Test
+       void test200() throws Exception {
+               client
+                               .get()
+                               .uri("/?template=a")
+                               .exchange()
+                               .expectStatus().isOk();
+               client
+                               .get()
+                               .uri("/?template=b")
+                               .exchange()
+                               .expectStatus().isOk();
+       }
+
+       @Test
+       void test503ByController() throws Exception {
+               client
+                               .get()
+                               .uri("/?template=foo")
+                               .exchange()
+                               .expectStatus().is5xxServerError();
+       }
+
+       @Test
+       void test503ByInfrastructure() throws Exception {
+               client
+                               .get()
+                               .uri("/?template=boom")
+                               .exchange()
+                               .expectStatus().is5xxServerError();
+       }
+}