diff --git a/README.adoc b/README.adoc
index b484bfe8c2..b41cd390cb 100644
--- a/README.adoc
+++ b/README.adoc
@@ -234,7 +234,6 @@ run the collaborators' stubs for you, as shown in the following example:
@SpringBootTest(webEnvironment=WebEnvironment.NONE)
@AutoConfigureStubRunner(ids = {"com.example:http-server-dsl:+:stubs:6565"},
stubsMode = StubRunnerProperties.StubsMode.LOCAL)
-@DirtiesContext
public class LoanApplicationServiceTests {
----
@@ -519,7 +518,6 @@ the collaborators' stubs for you, as shown in the following example:
@SpringBootTest(webEnvironment=WebEnvironment.NONE)
@AutoConfigureStubRunner(ids = {"com.example:http-server-dsl:+:stubs:6565"},
stubsMode = StubRunnerProperties.StubsMode.LOCAL)
-@DirtiesContext
public class LoanApplicationServiceTests {
----
@@ -693,7 +691,6 @@ Annotate your test class with `@AutoConfigureStubRunner`. In the annotation prov
@SpringBootTest(webEnvironment=WebEnvironment.NONE)
@AutoConfigureStubRunner(ids = {"com.example:http-server-dsl:+:stubs:6565"},
stubsMode = StubRunnerProperties.StubsMode.LOCAL)
-@DirtiesContext
public class LoanApplicationServiceTests {
----
@@ -1179,7 +1176,6 @@ can also provide the offline work switch (`StubRunnerProperties.StubsMode.LOCAL`
@SpringBootTest(webEnvironment=WebEnvironment.NONE)
@AutoConfigureStubRunner(ids = {"com.example:http-server-dsl:+:stubs:6565"},
stubsMode = StubRunnerProperties.StubsMode.LOCAL)
-@DirtiesContext
public class LoanApplicationServiceTests {
----
diff --git a/docs/src/main/asciidoc/verifier_introduction.adoc b/docs/src/main/asciidoc/verifier_introduction.adoc
index d5c36e7f29..a77b3b1957 100644
--- a/docs/src/main/asciidoc/verifier_introduction.adoc
+++ b/docs/src/main/asciidoc/verifier_introduction.adoc
@@ -200,7 +200,6 @@ run the collaborators' stubs for you, as shown in the following example:
@SpringBootTest(webEnvironment=WebEnvironment.NONE)
@AutoConfigureStubRunner(ids = {"com.example:http-server-dsl:+:stubs:6565"},
stubsMode = StubRunnerProperties.StubsMode.LOCAL)
-@DirtiesContext
public class LoanApplicationServiceTests {
----
@@ -475,7 +474,6 @@ the collaborators' stubs for you, as shown in the following example:
@SpringBootTest(webEnvironment=WebEnvironment.NONE)
@AutoConfigureStubRunner(ids = {"com.example:http-server-dsl:+:stubs:6565"},
stubsMode = StubRunnerProperties.StubsMode.LOCAL)
-@DirtiesContext
public class LoanApplicationServiceTests {
----
diff --git a/samples/standalone/dsl/http-client/src/test/java/com/example/loan/LoanApplicationServiceContextPathTests.java b/samples/standalone/dsl/http-client/src/test/java/com/example/loan/LoanApplicationServiceContextPathTests.java
index 13fe27ed58..ceaef58294 100644
--- a/samples/standalone/dsl/http-client/src/test/java/com/example/loan/LoanApplicationServiceContextPathTests.java
+++ b/samples/standalone/dsl/http-client/src/test/java/com/example/loan/LoanApplicationServiceContextPathTests.java
@@ -21,7 +21,6 @@ import com.example.loan.model.LoanApplicationStatus;
@SpringBootTest(webEnvironment=WebEnvironment.NONE, properties="server.context-path=/app")
@AutoConfigureStubRunner(ids = {"com.example:http-server-dsl:+:stubs:6565"},
stubsMode = StubRunnerProperties.StubsMode.LOCAL)
-@DirtiesContext
public class LoanApplicationServiceContextPathTests {
@Autowired
diff --git a/samples/standalone/dsl/http-client/src/test/java/com/example/loan/LoanApplicationServiceTests.java b/samples/standalone/dsl/http-client/src/test/java/com/example/loan/LoanApplicationServiceTests.java
index 3ce01ce1a9..d64ff07751 100644
--- a/samples/standalone/dsl/http-client/src/test/java/com/example/loan/LoanApplicationServiceTests.java
+++ b/samples/standalone/dsl/http-client/src/test/java/com/example/loan/LoanApplicationServiceTests.java
@@ -27,7 +27,6 @@ import static org.assertj.core.api.Assertions.assertThat;
@SpringBootTest(webEnvironment=WebEnvironment.NONE)
@AutoConfigureStubRunner(ids = {"com.example:http-server-dsl:+:stubs:6565"},
stubsMode = StubRunnerProperties.StubsMode.LOCAL)
-@DirtiesContext
public class LoanApplicationServiceTests {
// end::autoconfigure_stubrunner[]
diff --git a/samples/standalone/dsl/http-client/src/test/resources/application.yaml b/samples/standalone/dsl/http-client/src/test/resources/application.yaml
index 79ba03fbb4..fcdfd10d16 100644
--- a/samples/standalone/dsl/http-client/src/test/resources/application.yaml
+++ b/samples/standalone/dsl/http-client/src/test/resources/application.yaml
@@ -1,3 +1,5 @@
server:
port: 6565
-logging.level.org.springframework.cloud.contract: DEBUG
\ No newline at end of file
+logging:
+ level:
+ org.springframework.cloud.contract: debug
\ No newline at end of file
diff --git a/samples/standalone/pact/pact-http-client/src/test/java/com/example/loan/LoanApplicationServiceTests.java b/samples/standalone/pact/pact-http-client/src/test/java/com/example/loan/LoanApplicationServiceTests.java
index 56d33ae6de..3bf935987d 100644
--- a/samples/standalone/pact/pact-http-client/src/test/java/com/example/loan/LoanApplicationServiceTests.java
+++ b/samples/standalone/pact/pact-http-client/src/test/java/com/example/loan/LoanApplicationServiceTests.java
@@ -11,7 +11,6 @@ import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.cloud.contract.stubrunner.spring.AutoConfigureStubRunner;
import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties;
import org.springframework.core.env.Environment;
-import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.junit4.SpringRunner;
import com.example.loan.model.Client;
@@ -23,7 +22,6 @@ import com.example.loan.model.LoanApplicationStatus;
@SpringBootTest(webEnvironment=WebEnvironment.NONE)
@AutoConfigureStubRunner(ids = {"com.example:pact-http-server:+:stubs"},
stubsMode = StubRunnerProperties.StubsMode.LOCAL)
-@DirtiesContext
public class LoanApplicationServiceTests {
@Autowired
diff --git a/samples/standalone/restdocs/http-client/src/main/java/com/example/loan/ServiceProperties.java b/samples/standalone/restdocs/http-client/src/main/java/com/example/loan/ServiceProperties.java
new file mode 100644
index 0000000000..0dff3bd2da
--- /dev/null
+++ b/samples/standalone/restdocs/http-client/src/main/java/com/example/loan/ServiceProperties.java
@@ -0,0 +1,17 @@
+package com.example.loan;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+@ConfigurationProperties("service")
+public class ServiceProperties {
+
+ private int port = 8080;
+
+ public void setPort(int port) {
+ this.port = port;
+ }
+
+ public int getPort() {
+ return this.port;
+ }
+}
diff --git a/samples/standalone/restdocs/http-server/src/test/java/com/example/fraud/StubGeneratorTests.java b/samples/standalone/restdocs/http-server/src/test/java/com/example/fraud/StubGeneratorTests.java
index 8e8a1462bf..da67975c72 100644
--- a/samples/standalone/restdocs/http-server/src/test/java/com/example/fraud/StubGeneratorTests.java
+++ b/samples/standalone/restdocs/http-server/src/test/java/com/example/fraud/StubGeneratorTests.java
@@ -28,7 +28,6 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
@AutoConfigureRestDocs(outputDir = "target/snippets")
@AutoConfigureMockMvc
@AutoConfigureJsonTesters
-@DirtiesContext
public class StubGeneratorTests {
@Autowired
diff --git a/samples/standalone/restdocs/http-server/src/test/java/com/example/fraud/XmlStubGeneratorTests.java b/samples/standalone/restdocs/http-server/src/test/java/com/example/fraud/XmlStubGeneratorTests.java
index b36e22bad5..2067526cd7 100644
--- a/samples/standalone/restdocs/http-server/src/test/java/com/example/fraud/XmlStubGeneratorTests.java
+++ b/samples/standalone/restdocs/http-server/src/test/java/com/example/fraud/XmlStubGeneratorTests.java
@@ -31,7 +31,6 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
@SpringBootTest(classes = Application.class)
@AutoConfigureRestDocs(outputDir = "target/snippets")
@AutoConfigureMockMvc
-@DirtiesContext
public class XmlStubGeneratorTests {
@Autowired
diff --git a/samples/standalone/webclient/http-server/src/test/java/com/example/fraud/StubGeneratorTests.java b/samples/standalone/webclient/http-server/src/test/java/com/example/fraud/StubGeneratorTests.java
index 5363234e1d..2c655c3f96 100644
--- a/samples/standalone/webclient/http-server/src/test/java/com/example/fraud/StubGeneratorTests.java
+++ b/samples/standalone/webclient/http-server/src/test/java/com/example/fraud/StubGeneratorTests.java
@@ -28,7 +28,6 @@ import static org.springframework.cloud.contract.wiremock.restdocs.WireMockWebTe
@AutoConfigureRestDocs(outputDir = "target/snippets")
@AutoConfigureWebTestClient
@AutoConfigureJsonTesters
-@DirtiesContext
public class StubGeneratorTests {
@Autowired
diff --git a/samples/standalone/yml/http-client/src/test/java/com/example/loan/LoanApplicationServiceContextPathTests.java b/samples/standalone/yml/http-client/src/test/java/com/example/loan/LoanApplicationServiceContextPathTests.java
index 4a62dad689..e418990149 100644
--- a/samples/standalone/yml/http-client/src/test/java/com/example/loan/LoanApplicationServiceContextPathTests.java
+++ b/samples/standalone/yml/http-client/src/test/java/com/example/loan/LoanApplicationServiceContextPathTests.java
@@ -9,7 +9,6 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.cloud.contract.stubrunner.spring.AutoConfigureStubRunner;
import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties;
-import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.junit4.SpringRunner;
import com.example.loan.model.Client;
@@ -21,7 +20,6 @@ import com.example.loan.model.LoanApplicationStatus;
@SpringBootTest(webEnvironment=WebEnvironment.NONE, properties="server.context-path=/app")
@AutoConfigureStubRunner(ids = {"com.example:http-server-yml:+:stubs:6569"},
stubsMode = StubRunnerProperties.StubsMode.LOCAL)
-@DirtiesContext
public class LoanApplicationServiceContextPathTests {
@Autowired
diff --git a/samples/standalone/yml/http-client/src/test/java/com/example/loan/LoanApplicationServiceTests.java b/samples/standalone/yml/http-client/src/test/java/com/example/loan/LoanApplicationServiceTests.java
index 7fa34bb0dc..a0949d753c 100644
--- a/samples/standalone/yml/http-client/src/test/java/com/example/loan/LoanApplicationServiceTests.java
+++ b/samples/standalone/yml/http-client/src/test/java/com/example/loan/LoanApplicationServiceTests.java
@@ -7,7 +7,6 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.cloud.contract.stubrunner.spring.AutoConfigureStubRunner;
import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties;
-import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.junit4.SpringRunner;
import com.example.loan.model.Client;
@@ -22,7 +21,6 @@ import static org.assertj.core.api.Assertions.assertThat;
@SpringBootTest(webEnvironment=WebEnvironment.NONE)
@AutoConfigureStubRunner(ids = {"com.example:http-server-yml:+:stubs:6569"},
stubsMode = StubRunnerProperties.StubsMode.LOCAL)
-@DirtiesContext
public class LoanApplicationServiceTests {
// end::autoconfigure_stubrunner[]
diff --git a/samples/wiremock-jetty/src/test/java/com/example/WiremockForDocsClassRuleTests.java b/samples/wiremock-jetty/src/test/java/com/example/WiremockForDocsClassRuleTests.java
index 94aff4b974..8633d32cdb 100644
--- a/samples/wiremock-jetty/src/test/java/com/example/WiremockForDocsClassRuleTests.java
+++ b/samples/wiremock-jetty/src/test/java/com/example/WiremockForDocsClassRuleTests.java
@@ -20,7 +20,6 @@ import org.springframework.test.context.junit4.SpringRunner;
import com.github.tomakehurst.wiremock.junit.WireMockClassRule;
@ActiveProfiles("classrule")
-@DirtiesContext
//tag::wiremock_test1[]
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
diff --git a/samples/wiremock-jetty/src/test/java/com/example/WiremockForDocsMockServerApplicationTests.java b/samples/wiremock-jetty/src/test/java/com/example/WiremockForDocsMockServerApplicationTests.java
index 8bbcec20ff..b46bfc3c80 100644
--- a/samples/wiremock-jetty/src/test/java/com/example/WiremockForDocsMockServerApplicationTests.java
+++ b/samples/wiremock-jetty/src/test/java/com/example/WiremockForDocsMockServerApplicationTests.java
@@ -13,7 +13,6 @@ import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.client.MockRestServiceServer;
import org.springframework.web.client.RestTemplate;
-@DirtiesContext
// tag::wiremock_test[]
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.NONE)
diff --git a/samples/wiremock-jetty/src/test/java/com/example/WiremockForDocsTests.java b/samples/wiremock-jetty/src/test/java/com/example/WiremockForDocsTests.java
index 80ee38dd34..fda739e6e9 100644
--- a/samples/wiremock-jetty/src/test/java/com/example/WiremockForDocsTests.java
+++ b/samples/wiremock-jetty/src/test/java/com/example/WiremockForDocsTests.java
@@ -19,7 +19,6 @@ import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
import static org.assertj.core.api.Assertions.assertThat;
@ActiveProfiles("docs")
-@DirtiesContext
//tag::wiremock_test1[]
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
diff --git a/samples/wiremock-jetty/src/test/java/com/example/WiremockHttpsServerApplicationTests.java b/samples/wiremock-jetty/src/test/java/com/example/WiremockHttpsServerApplicationTests.java
index 93b83c12d5..8e3fc669a5 100644
--- a/samples/wiremock-jetty/src/test/java/com/example/WiremockHttpsServerApplicationTests.java
+++ b/samples/wiremock-jetty/src/test/java/com/example/WiremockHttpsServerApplicationTests.java
@@ -21,7 +21,6 @@ import static org.assertj.core.api.Assertions.assertThat;
@RunWith(SpringRunner.class)
@SpringBootTest("app.baseUrl=https://localhost:8443")
-@DirtiesContext
@AutoConfigureHttpClient
public class WiremockHttpsServerApplicationTests {
diff --git a/samples/wiremock-jetty/src/test/java/com/example/WiremockImportApplicationTests.java b/samples/wiremock-jetty/src/test/java/com/example/WiremockImportApplicationTests.java
index 121f8e2d50..761c7344c6 100644
--- a/samples/wiremock-jetty/src/test/java/com/example/WiremockImportApplicationTests.java
+++ b/samples/wiremock-jetty/src/test/java/com/example/WiremockImportApplicationTests.java
@@ -18,7 +18,6 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(properties="app.baseUrl=http://localhost:6060", webEnvironment=WebEnvironment.NONE)
-@DirtiesContext
@AutoConfigureWireMock(port = 6060)
public class WiremockImportApplicationTests {
diff --git a/samples/wiremock-jetty/src/test/java/com/example/WiremockMockServerApplicationTests.java b/samples/wiremock-jetty/src/test/java/com/example/WiremockMockServerApplicationTests.java
index 6044625d39..ac7d44c007 100644
--- a/samples/wiremock-jetty/src/test/java/com/example/WiremockMockServerApplicationTests.java
+++ b/samples/wiremock-jetty/src/test/java/com/example/WiremockMockServerApplicationTests.java
@@ -15,7 +15,6 @@ import org.springframework.web.client.RestTemplate;
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment=WebEnvironment.NONE)
-@DirtiesContext
public class WiremockMockServerApplicationTests {
@Autowired
diff --git a/samples/wiremock-jetty/src/test/java/com/example/WiremockServerApplicationTests.java b/samples/wiremock-jetty/src/test/java/com/example/WiremockServerApplicationTests.java
index 9bbb1671d6..cdb6c9e950 100644
--- a/samples/wiremock-jetty/src/test/java/com/example/WiremockServerApplicationTests.java
+++ b/samples/wiremock-jetty/src/test/java/com/example/WiremockServerApplicationTests.java
@@ -28,7 +28,6 @@ import static org.hamcrest.CoreMatchers.instanceOf;
@RunWith(SpringRunner.class)
@SpringBootTest(properties="app.baseUrl=http://localhost:6061", webEnvironment=WebEnvironment.NONE)
-@DirtiesContext
public class WiremockServerApplicationTests {
@ClassRule
diff --git a/samples/wiremock-native/src/test/java/com/example/WiremockServerApplicationTests.java b/samples/wiremock-native/src/test/java/com/example/WiremockServerApplicationTests.java
index faef1e5ff2..6c532787db 100644
--- a/samples/wiremock-native/src/test/java/com/example/WiremockServerApplicationTests.java
+++ b/samples/wiremock-native/src/test/java/com/example/WiremockServerApplicationTests.java
@@ -19,7 +19,6 @@ import com.github.tomakehurst.wiremock.junit.WireMockClassRule;
@RunWith(SpringRunner.class)
@SpringBootTest(properties="app.baseUrl=http://localhost:6063", webEnvironment=WebEnvironment.NONE)
-@DirtiesContext
public class WiremockServerApplicationTests {
@ClassRule
diff --git a/samples/wiremock-tomcat/src/test/java/com/example/WiremockHttpsServerApplicationTests.java b/samples/wiremock-tomcat/src/test/java/com/example/WiremockHttpsServerApplicationTests.java
index 9e30002fdf..05e370b069 100644
--- a/samples/wiremock-tomcat/src/test/java/com/example/WiremockHttpsServerApplicationTests.java
+++ b/samples/wiremock-tomcat/src/test/java/com/example/WiremockHttpsServerApplicationTests.java
@@ -21,7 +21,6 @@ import com.github.tomakehurst.wiremock.junit.WireMockClassRule;
@RunWith(SpringRunner.class)
@SpringBootTest("app.baseUrl=https://localhost:6443")
-@DirtiesContext
@AutoConfigureHttpClient
public class WiremockHttpsServerApplicationTests {
diff --git a/samples/wiremock-tomcat/src/test/java/com/example/WiremockImportApplicationTests.java b/samples/wiremock-tomcat/src/test/java/com/example/WiremockImportApplicationTests.java
index 7169d26908..1b4f3916ef 100644
--- a/samples/wiremock-tomcat/src/test/java/com/example/WiremockImportApplicationTests.java
+++ b/samples/wiremock-tomcat/src/test/java/com/example/WiremockImportApplicationTests.java
@@ -18,7 +18,6 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(properties="app.baseUrl=http://localhost:6065", webEnvironment=WebEnvironment.NONE)
-@DirtiesContext
@AutoConfigureWireMock(port = 6065)
public class WiremockImportApplicationTests {
diff --git a/samples/wiremock-tomcat/src/test/java/com/example/WiremockImportContextPathApplicationTests.java b/samples/wiremock-tomcat/src/test/java/com/example/WiremockImportContextPathApplicationTests.java
index c46ffe2873..dc091a4653 100644
--- a/samples/wiremock-tomcat/src/test/java/com/example/WiremockImportContextPathApplicationTests.java
+++ b/samples/wiremock-tomcat/src/test/java/com/example/WiremockImportContextPathApplicationTests.java
@@ -18,7 +18,6 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(properties = { "app.baseUrl=http://localhost:6066",
"server.context-path=/app" }, webEnvironment = WebEnvironment.NONE)
-@DirtiesContext
@AutoConfigureWireMock(port = 6066)
public class WiremockImportContextPathApplicationTests {
diff --git a/samples/wiremock-tomcat/src/test/java/com/example/WiremockMockServerApplicationTests.java b/samples/wiremock-tomcat/src/test/java/com/example/WiremockMockServerApplicationTests.java
index bf75089652..ec44e4a947 100644
--- a/samples/wiremock-tomcat/src/test/java/com/example/WiremockMockServerApplicationTests.java
+++ b/samples/wiremock-tomcat/src/test/java/com/example/WiremockMockServerApplicationTests.java
@@ -15,7 +15,6 @@ import org.springframework.web.client.RestTemplate;
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment=WebEnvironment.NONE)
-@DirtiesContext
public class WiremockMockServerApplicationTests {
@Autowired
diff --git a/samples/wiremock-tomcat/src/test/java/com/example/WiremockServerApplicationTests.java b/samples/wiremock-tomcat/src/test/java/com/example/WiremockServerApplicationTests.java
index d4c5656527..b47123d10e 100644
--- a/samples/wiremock-tomcat/src/test/java/com/example/WiremockServerApplicationTests.java
+++ b/samples/wiremock-tomcat/src/test/java/com/example/WiremockServerApplicationTests.java
@@ -29,7 +29,6 @@ import static org.hamcrest.CoreMatchers.instanceOf;
@RunWith(SpringRunner.class)
@SpringBootTest(properties="app.baseUrl=http://localhost:6067", webEnvironment=WebEnvironment.NONE)
-@DirtiesContext
public class WiremockServerApplicationTests {
@ClassRule
diff --git a/samples/wiremock-undertow-ssl/src/test/java/com/example/WiremockHttpsServerApplicationTests.java b/samples/wiremock-undertow-ssl/src/test/java/com/example/WiremockHttpsServerApplicationTests.java
index 4bd913d950..4fe5fe2426 100644
--- a/samples/wiremock-undertow-ssl/src/test/java/com/example/WiremockHttpsServerApplicationTests.java
+++ b/samples/wiremock-undertow-ssl/src/test/java/com/example/WiremockHttpsServerApplicationTests.java
@@ -22,7 +22,6 @@ import com.github.tomakehurst.wiremock.junit.WireMockClassRule;
@RunWith(SpringRunner.class)
@SpringBootTest("app.baseUrl=https://localhost:7443")
-@DirtiesContext
@ActiveProfiles("ssl")
public class WiremockHttpsServerApplicationTests {
diff --git a/samples/wiremock-undertow/src/test/java/com/example/WiremockImportApplicationTests.java b/samples/wiremock-undertow/src/test/java/com/example/WiremockImportApplicationTests.java
index fd6c29e060..12440cbce8 100644
--- a/samples/wiremock-undertow/src/test/java/com/example/WiremockImportApplicationTests.java
+++ b/samples/wiremock-undertow/src/test/java/com/example/WiremockImportApplicationTests.java
@@ -18,7 +18,6 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(properties="app.baseUrl=http://localhost:7070", webEnvironment=WebEnvironment.NONE)
-@DirtiesContext
@AutoConfigureWireMock(port = 7070)
public class WiremockImportApplicationTests {
diff --git a/samples/wiremock-undertow/src/test/java/com/example/WiremockMockServerApplicationTests.java b/samples/wiremock-undertow/src/test/java/com/example/WiremockMockServerApplicationTests.java
index f53438fc5a..ae6055a12b 100644
--- a/samples/wiremock-undertow/src/test/java/com/example/WiremockMockServerApplicationTests.java
+++ b/samples/wiremock-undertow/src/test/java/com/example/WiremockMockServerApplicationTests.java
@@ -15,7 +15,6 @@ import org.springframework.web.client.RestTemplate;
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment=WebEnvironment.NONE)
-@DirtiesContext
public class WiremockMockServerApplicationTests {
@Autowired
diff --git a/samples/wiremock-undertow/src/test/java/com/example/WiremockServerApplicationTests.java b/samples/wiremock-undertow/src/test/java/com/example/WiremockServerApplicationTests.java
index 9fd429e5b1..1dc0c5d538 100644
--- a/samples/wiremock-undertow/src/test/java/com/example/WiremockServerApplicationTests.java
+++ b/samples/wiremock-undertow/src/test/java/com/example/WiremockServerApplicationTests.java
@@ -20,7 +20,6 @@ import com.github.tomakehurst.wiremock.junit.WireMockClassRule;
@RunWith(SpringRunner.class)
@SpringBootTest(properties="app.baseUrl=http://localhost:7071", webEnvironment=WebEnvironment.NONE)
-@DirtiesContext
public class WiremockServerApplicationTests {
@ClassRule
diff --git a/spring-cloud-contract-stub-runner/README.adoc b/spring-cloud-contract-stub-runner/README.adoc
index 1b3eec708d..cbd8e6ad91 100644
--- a/spring-cloud-contract-stub-runner/README.adoc
+++ b/spring-cloud-contract-stub-runner/README.adoc
@@ -148,14 +148,6 @@ HTTP stubs without the need to download artifacts.
==== Running stubs
-===== Limitations
-
-IMPORTANT: There might be a problem with StubRunner shutting down ports between tests. You might
- have a situation in which you get port conflicts. As long as you use the same context across tests
- everything works fine. But when the context are different (e.g. different stubs or different profiles)
- then you have to either use `@DirtiesContext` to shut down the stub servers, or else run them on
- different ports per test.
-
===== Running using main app
You can set the following options to the main class:
diff --git a/spring-cloud-contract-stub-runner/pom.xml b/spring-cloud-contract-stub-runner/pom.xml
index dbd0cbd4ab..bbc93908a3 100644
--- a/spring-cloud-contract-stub-runner/pom.xml
+++ b/spring-cloud-contract-stub-runner/pom.xml
@@ -82,6 +82,11 @@
com.jcraft
jsch.agentproxy.usocket-jna
+
+ org.springframework
+ spring-test
+ true
+
org.springframework.boot
spring-boot-autoconfigure-processor
diff --git a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/StubRunnerExecutor.java b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/StubRunnerExecutor.java
index 551076cf13..80825968fe 100644
--- a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/StubRunnerExecutor.java
+++ b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/StubRunnerExecutor.java
@@ -25,6 +25,7 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Set;
import groovy.json.JsonOutput;
import org.slf4j.Logger;
@@ -38,12 +39,15 @@ import org.springframework.cloud.contract.stubrunner.provider.wiremock.WireMockH
import org.springframework.cloud.contract.verifier.messaging.MessageVerifier;
import org.springframework.cloud.contract.verifier.messaging.noop.NoOpStubMessages;
import org.springframework.cloud.contract.verifier.util.BodyExtractor;
+import wiremock.org.eclipse.jetty.util.ConcurrentHashSet;
/**
* Runs stubs for a particular {@link StubServer}
*/
class StubRunnerExecutor implements StubFinder {
+ static final Set STUB_SERVERS = new ConcurrentHashSet<>();
+
private static final Logger log = LoggerFactory.getLogger(StubRunnerExecutor.class);
private final AvailablePortScanner portScanner;
private final MessageVerifier> contractVerifierMessaging;
@@ -261,6 +265,7 @@ class StubRunnerExecutor implements StubFinder {
}
});
}
+ STUB_SERVERS.add(this.stubServer);
}
private boolean hasRequest(Collection contracts) {
diff --git a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/StubServer.java b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/StubServer.java
index 73c7ded42f..429edb6ac3 100644
--- a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/StubServer.java
+++ b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/StubServer.java
@@ -20,6 +20,7 @@ import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Collection;
+import java.util.Objects;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -59,7 +60,14 @@ class StubServer {
return this;
}
+ public boolean isRunning() {
+ return this.httpServerStub.isRunning();
+ }
+
public void stop() {
+ if (log.isDebugEnabled()) {
+ log.debug("Stopping the server at port [" + this.getPort() + "]");
+ }
this.httpServerStub.stop();
}
@@ -95,4 +103,22 @@ class StubServer {
return this.httpServerStub.registeredMappings();
}
+ @Override public boolean equals(Object o) {
+ if (this == o)
+ return true;
+ if (o == null || getClass() != o.getClass())
+ return false;
+ StubServer that = (StubServer) o;
+ return Objects.equals(this.stubConfiguration, that.stubConfiguration) && Objects
+ .equals(this.contracts, that.contracts);
+ }
+
+ @Override public int hashCode() {
+ return Objects.hash(this.stubConfiguration, this.contracts);
+ }
+
+ @Override public String toString() {
+ return "StubServer{" + "stubConfiguration=" + this.stubConfiguration + ", mappingsSize="
+ + this.mappings.size() + '}';
+ }
}
diff --git a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/provider/wiremock/StubRunnerWireMockTestExecutionListener.java b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/provider/wiremock/StubRunnerWireMockTestExecutionListener.java
new file mode 100644
index 0000000000..b29e451bf7
--- /dev/null
+++ b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/provider/wiremock/StubRunnerWireMockTestExecutionListener.java
@@ -0,0 +1,63 @@
+package org.springframework.cloud.contract.stubrunner.provider.wiremock;
+
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import com.github.tomakehurst.wiremock.stubbing.StubMapping;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.cloud.contract.stubrunner.HttpServerStub;
+import org.springframework.context.ApplicationContext;
+import org.springframework.test.context.TestContext;
+import org.springframework.test.context.support.AbstractTestExecutionListener;
+import org.springframework.util.Assert;
+import org.springframework.web.client.RestTemplate;
+
+/**
+ * Stops the {@link HttpServerStub} after each test class
+ *
+ * @author Marcin Grzejszczak
+ * @since 1.2.6
+ */
+public final class StubRunnerWireMockTestExecutionListener extends AbstractTestExecutionListener {
+
+ private static final Log log = LogFactory.getLog(StubRunnerWireMockTestExecutionListener.class);
+
+ private static Map> STUBS = new ConcurrentHashMap<>();
+
+ @Override public void beforeTestClass(TestContext testContext) {
+ Map stubs = STUBS
+ .get(testContext.getApplicationContext());
+ if (stubs != null) {
+ if (log.isDebugEnabled()) {
+ log.debug("Found a matching application context from [" + testContext.getTestClass().getName() + "]");
+ }
+ for (Map.Entry entry : stubs.entrySet()) {
+ while (entry.getKey().isRunning()) {
+ entry.getKey().stop();
+ }
+ List mappings = entry.getValue().mappings;
+ if (log.isDebugEnabled()) {
+ log.debug("Stopped a running WireMock instance at "
+ + "port [" + entry.getValue().port + "] with stub mappings "
+ + "size [" + mappings.size() + "]. Restarting the stub.");
+ }
+ entry.getKey().start(entry.getValue().port);
+ entry.getKey().registerDescriptors(mappings);
+ Assert.isTrue(new RestTemplate().getForEntity("http://localhost:" + entry.getValue().port + "/__admin/mappings", String.class)
+ .getStatusCode().is2xxSuccessful(), "__admin/mappings endpoint wasn't accessible");
+ }
+ }
+ }
+
+ @Override public void afterTestClass(TestContext testContext) {
+ STUBS.put(testContext.getApplicationContext(), WireMockHttpServerStub.SERVERS);
+ if (log.isDebugEnabled()) {
+ log.debug("Stopping servers " + WireMockHttpServerStub.SERVERS);
+ }
+ for (HttpServerStub serverStub : WireMockHttpServerStub.SERVERS.keySet()) {
+ serverStub.stop();
+ }
+ }
+}
\ No newline at end of file
diff --git a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/provider/wiremock/WireMockHttpServerStub.java b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/provider/wiremock/WireMockHttpServerStub.java
index 8413c934dd..82c0e13fad 100644
--- a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/provider/wiremock/WireMockHttpServerStub.java
+++ b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/provider/wiremock/WireMockHttpServerStub.java
@@ -10,6 +10,7 @@ import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
import com.github.tomakehurst.wiremock.WireMockServer;
import com.github.tomakehurst.wiremock.client.WireMock;
@@ -43,6 +44,8 @@ public class WireMockHttpServerStub implements HttpServerStub {
private static final Logger log = LoggerFactory.getLogger(WireMockHttpServerStub.class);
private static final int INVALID_PORT = -1;
+ static final Map SERVERS = new ConcurrentHashMap<>();
+
private WireMockServer wireMockServer;
private WireMockConfiguration config() {
@@ -107,6 +110,12 @@ public class WireMockHttpServerStub implements HttpServerStub {
this.wireMockServer = new WireMockServer(config().port(port)
.notifier(new Slf4jNotifier(true)));
this.wireMockServer.start();
+ if (log.isDebugEnabled()) {
+ log.debug("Started WireMock at port [" + port + "]");
+ }
+ if (!SERVERS.containsKey(this)) {
+ SERVERS.put(this, new PortAndMappings(port, new ArrayList()));
+ }
return this;
}
@@ -159,20 +168,25 @@ public class WireMockHttpServerStub implements HttpServerStub {
}
private void registerStubMappings(Collection stubFiles) {
- WireMock wireMock = new WireMock("localhost", port(), "");
+ WireMock wireMock = wireMock();
registerDefaultHealthChecks(wireMock);
registerStubs(stubFiles, wireMock);
}
+ private WireMock wireMock() {
+ return new WireMock("localhost", port(), "");
+ }
+
private void registerDefaultHealthChecks(WireMock wireMock) {
registerHealthCheck(wireMock, "/ping");
registerHealthCheck(wireMock, "/health");
}
private void registerStubs(Collection sortedMappings, WireMock wireMock) {
+ List stubMappings = new ArrayList<>();
for (File mappingDescriptor : sortedMappings) {
try {
- wireMock.register(getMapping(mappingDescriptor));
+ stubMappings.add(registerDescriptor(wireMock, mappingDescriptor));
if (log.isDebugEnabled()) {
log.debug("Registered stub mappings from [" + mappingDescriptor + "]");
}
@@ -183,6 +197,23 @@ public class WireMockHttpServerStub implements HttpServerStub {
}
}
}
+ PortAndMappings portAndMappings = SERVERS.get(this);
+ SERVERS.put(this, new PortAndMappings(portAndMappings.port, stubMappings));
+ }
+
+ private StubMapping registerDescriptor(WireMock wireMock, File mappingDescriptor) {
+ StubMapping mapping = getMapping(mappingDescriptor);
+ wireMock.register(mapping);
+ return mapping;
+ }
+
+ void registerDescriptors(List stubMappings) {
+ if (log.isDebugEnabled()) {
+ log.debug("Registering stub mappings size [" + stubMappings.size() + "] at port [" + port() + "]");
+ }
+ for (StubMapping mapping : stubMappings) {
+ wireMock().register(mapping);
+ }
}
private void registerHealthCheck(WireMock wireMock, String url) {
@@ -194,3 +225,17 @@ public class WireMockHttpServerStub implements HttpServerStub {
WireMock.get(WireMock.urlEqualTo(url)).willReturn(WireMock.aResponse().withBody(body).withStatus(200)));
}
}
+
+class PortAndMappings {
+ final Integer port;
+ final List mappings;
+
+ PortAndMappings(Integer port, List mappings) {
+ this.port = port;
+ this.mappings = mappings;
+ }
+
+ @Override public String toString() {
+ return "PortAndMappings{" + "port=" + this.port + ", mappings=" + this.mappings.size() + '}';
+ }
+}
\ No newline at end of file
diff --git a/spring-cloud-contract-stub-runner/src/main/resources/META-INF/spring.factories b/spring-cloud-contract-stub-runner/src/main/resources/META-INF/spring.factories
index 3fec992554..a6042d7383 100644
--- a/spring-cloud-contract-stub-runner/src/main/resources/META-INF/spring.factories
+++ b/spring-cloud-contract-stub-runner/src/main/resources/META-INF/spring.factories
@@ -8,4 +8,8 @@ org.springframework.cloud.contract.stubrunner.messaging.integration.StubRunnerIn
org.springframework.cloud.contract.stubrunner.spring.cloud.zookeeper.StubRunnerSpringCloudZookeeperAutoConfiguration,\
org.springframework.cloud.contract.stubrunner.spring.cloud.eureka.StubRunnerSpringCloudEurekaAutoConfiguration,\
org.springframework.cloud.contract.stubrunner.spring.cloud.consul.StubRunnerSpringCloudConsulAutoConfiguration,\
-org.springframework.cloud.contract.stubrunner.messaging.StubRunnerStreamsIntegrationAutoConfiguration
\ No newline at end of file
+org.springframework.cloud.contract.stubrunner.messaging.StubRunnerStreamsIntegrationAutoConfiguration
+
+# Test Execution Listeners
+org.springframework.test.context.TestExecutionListener=\
+org.springframework.cloud.contract.stubrunner.provider.wiremock.StubRunnerWireMockTestExecutionListener
\ No newline at end of file
diff --git a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/StubRunnerConfigurationSpec.groovy b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/StubRunnerConfigurationSpec.groovy
index 30a48e4f2d..9dab153375 100644
--- a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/StubRunnerConfigurationSpec.groovy
+++ b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/StubRunnerConfigurationSpec.groovy
@@ -29,7 +29,6 @@ import org.springframework.cloud.contract.stubrunner.StubFinder
import org.springframework.cloud.contract.stubrunner.StubNotFoundException
import org.springframework.context.annotation.Configuration
import org.springframework.core.env.Environment
-import org.springframework.test.annotation.DirtiesContext
import org.springframework.test.context.ActiveProfiles
import org.springframework.test.context.ContextConfiguration
import spock.lang.Specification
@@ -44,7 +43,6 @@ import spock.lang.Specification
'foo=${stubrunner.runningstubs.fraudDetectionServer.port}',
'fooWithGroup=${stubrunner.runningstubs.org.springframework.cloud.contract.verifier.stubs.fraudDetectionServer.port}'])
@AutoConfigureStubRunner(mappingsOutputFolder = "target/outputmappings/")
-@DirtiesContext
@ActiveProfiles("test")
class StubRunnerConfigurationSpec extends Specification {
diff --git a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/StubRunnerSpringCloudAutoConfigurationSpec.groovy b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/StubRunnerSpringCloudAutoConfigurationSpec.groovy
index f056625880..c18fb30147 100644
--- a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/StubRunnerSpringCloudAutoConfigurationSpec.groovy
+++ b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/StubRunnerSpringCloudAutoConfigurationSpec.groovy
@@ -31,7 +31,6 @@ import org.springframework.cloud.zookeeper.ZookeeperAutoConfiguration
import org.springframework.cloud.zookeeper.discovery.RibbonZookeeperAutoConfiguration
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
-import org.springframework.test.annotation.DirtiesContext
import org.springframework.test.context.ActiveProfiles
import org.springframework.test.context.ContextConfiguration
import org.springframework.web.client.RestTemplate
@@ -50,7 +49,6 @@ import spock.lang.Specification
stubsMode = StubRunnerProperties.StubsMode.REMOTE,
repositoryRoot = "classpath:m2repo/repository/")
// end::autoconfigure[]
-@DirtiesContext
class StubRunnerSpringCloudAutoConfigurationSpec extends Specification {
@Autowired StubFinder stubFinder
diff --git a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/StubRunnerStubsPerConsumerSpec.groovy b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/StubRunnerStubsPerConsumerSpec.groovy
index 1a207ac896..eba68535f0 100644
--- a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/StubRunnerStubsPerConsumerSpec.groovy
+++ b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/StubRunnerStubsPerConsumerSpec.groovy
@@ -33,7 +33,6 @@ import org.springframework.context.annotation.Configuration
import org.springframework.core.env.Environment
import org.springframework.http.ResponseEntity
import org.springframework.messaging.Message
-import org.springframework.test.annotation.DirtiesContext
import org.springframework.test.context.ContextConfiguration
/**
* @author Marcin Grzejszczak
@@ -45,7 +44,6 @@ import org.springframework.test.context.ContextConfiguration
repositoryRoot = "classpath:m2repo/repository/",
stubsMode = StubRunnerProperties.StubsMode.REMOTE,
stubsPerConsumer = true)
-@DirtiesContext
class StubRunnerStubsPerConsumerSpec extends Specification {
// end::test[]
diff --git a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/StubRunnerStubsPerConsumerWithConsumerNameSpec.groovy b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/StubRunnerStubsPerConsumerWithConsumerNameSpec.groovy
index 8b2f2e4557..1e3ed7fed1 100644
--- a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/StubRunnerStubsPerConsumerWithConsumerNameSpec.groovy
+++ b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/StubRunnerStubsPerConsumerWithConsumerNameSpec.groovy
@@ -33,7 +33,6 @@ import org.springframework.context.annotation.Configuration
import org.springframework.core.env.Environment
import org.springframework.http.ResponseEntity
import org.springframework.messaging.Message
-import org.springframework.test.annotation.DirtiesContext
import org.springframework.test.context.ContextConfiguration
/**
* @author Marcin Grzejszczak
@@ -46,7 +45,6 @@ import org.springframework.test.context.ContextConfiguration
consumerName = "foo-consumer",
stubsMode = StubRunnerProperties.StubsMode.REMOTE,
stubsPerConsumer = true)
-@DirtiesContext
class StubRunnerStubsPerConsumerWithConsumerNameSpec extends Specification {
// end::test[]
diff --git a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/consul/StubRunnerSpringCloudConsulAutoConfigurationSpec.groovy b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/consul/StubRunnerSpringCloudConsulAutoConfigurationSpec.groovy
index d9896e3f91..7a2550c394 100644
--- a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/consul/StubRunnerSpringCloudConsulAutoConfigurationSpec.groovy
+++ b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/consul/StubRunnerSpringCloudConsulAutoConfigurationSpec.groovy
@@ -33,7 +33,6 @@ import org.springframework.cloud.contract.stubrunner.spring.AutoConfigureStubRun
import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
-import org.springframework.test.annotation.DirtiesContext
import org.springframework.test.context.ContextConfiguration
import static org.mockito.BDDMockito.then
@@ -58,7 +57,6 @@ import static org.mockito.Mockito.mock
"org.springframework.cloud.contract.verifier.stubs:bootService"],
stubsMode = StubRunnerProperties.StubsMode.REMOTE,
repositoryRoot = "classpath:m2repo/repository/")
-@DirtiesContext
class StubRunnerSpringCloudConsulAutoConfigurationSpec extends Specification {
@Autowired ConsulClient client
diff --git a/spring-cloud-contract-stub-runner/src/test/java/org/springframework/cloud/contract/stubrunner/StubRunnerSliceTests.java b/spring-cloud-contract-stub-runner/src/test/java/org/springframework/cloud/contract/stubrunner/StubRunnerSliceTests.java
index 0e49703aab..8fa3004be3 100644
--- a/spring-cloud-contract-stub-runner/src/test/java/org/springframework/cloud/contract/stubrunner/StubRunnerSliceTests.java
+++ b/spring-cloud-contract-stub-runner/src/test/java/org/springframework/cloud/contract/stubrunner/StubRunnerSliceTests.java
@@ -47,7 +47,6 @@ import static org.assertj.core.api.Assertions.assertThat;
maxPort = 10020,
mappingsOutputFolder = "target/outputmappings/",
properties = {"hello=world", "foo=bar"})
-@DirtiesContext
@ActiveProfiles("test")
public class StubRunnerSliceTests {
diff --git a/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/WireMockConfiguration.java b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/WireMockConfiguration.java
index d01c428ac4..466069cc1b 100644
--- a/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/WireMockConfiguration.java
+++ b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/WireMockConfiguration.java
@@ -27,6 +27,9 @@ import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
+import com.github.tomakehurst.wiremock.common.Slf4jNotifier;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -37,9 +40,15 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+import org.springframework.util.Assert;
import org.springframework.util.StreamUtils;
import org.springframework.util.StringUtils;
+import com.github.tomakehurst.wiremock.WireMockServer;
+import com.github.tomakehurst.wiremock.client.WireMock;
+import com.github.tomakehurst.wiremock.core.Options;
+import org.springframework.web.client.RestTemplate;
+
/**
* Configuration and lifecycle for a Spring Application context that wants to run a
* WireMock server. Can be used by adding
@@ -55,6 +64,10 @@ import org.springframework.util.StringUtils;
@EnableConfigurationProperties(WireMockProperties.class)
public class WireMockConfiguration implements SmartLifecycle {
+ private static final Log log = LogFactory.getLog(WireMockConfiguration.class);
+
+ static final String WIREMOCK_SERVER_BEAN_NAME = "wireMockServer";
+
private volatile boolean running;
private WireMockServer server;
@@ -91,10 +104,15 @@ public class WireMockConfiguration implements SmartLifecycle {
this.customizer.customize(factory);
}
}
- this.server = new WireMockServer(this.options);
+ if (this.server == null) {
+ this.server = new WireMockServer(this.options);
+ }
registerStubs();
- if (!this.beanFactory.containsBean("wireMockServer")) {
- this.beanFactory.registerSingleton("wireMockServer", this.server);
+ if (log.isDebugEnabled()) {
+ log.debug("WireMock server has [" + this.server.getStubMappings().size() + "] registered");
+ }
+ if (!this.beanFactory.containsBean(WIREMOCK_SERVER_BEAN_NAME)) {
+ this.beanFactory.registerSingleton(WIREMOCK_SERVER_BEAN_NAME, this.server);
}
}
@@ -118,6 +136,10 @@ public class WireMockConfiguration implements SmartLifecycle {
}
}
+ void reset() {
+ this.server.resetAll();
+ }
+
private void registerFiles(com.github.tomakehurst.wiremock.core.WireMockConfiguration factory) throws IOException {
List resources = new ArrayList<>();
for (String files : this.wireMock.getServer().getFiles()) {
@@ -142,6 +164,11 @@ public class WireMockConfiguration implements SmartLifecycle {
this.server.start();
WireMock.configureFor("localhost", this.server.port());
this.running = true;
+ if (log.isDebugEnabled()) {
+ log.debug("Started WireMock at port [" + this.server.port() + "]. It has [" + this.server.getStubMappings().size() + "] mappings registered");
+ }
+ Assert.isTrue(new RestTemplate().getForEntity("http://localhost:" + this.server.port() + "/__admin/mappings", String.class)
+ .getStatusCode().is2xxSuccessful(), "__admin/mappings endpoint wasn't accessible");
}
@Override
@@ -149,6 +176,9 @@ public class WireMockConfiguration implements SmartLifecycle {
if (this.running) {
this.server.stop();
this.running = false;
+ if (log.isDebugEnabled()) {
+ log.debug("Stopped WireMock instance");
+ }
}
}
diff --git a/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/WireMockTestExecutionListener.java b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/WireMockTestExecutionListener.java
new file mode 100644
index 0000000000..77947f65bf
--- /dev/null
+++ b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/WireMockTestExecutionListener.java
@@ -0,0 +1,73 @@
+package org.springframework.cloud.contract.wiremock;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.test.context.TestContext;
+import org.springframework.test.context.support.AbstractTestExecutionListener;
+
+/**
+ * Stops the WireMock server after each test class and restarts it before every class
+ *
+ * @author Marcin Grzejszczak
+ * @since 1.2.6
+ */
+public final class WireMockTestExecutionListener extends AbstractTestExecutionListener {
+
+ private static final Log log = LogFactory.getLog(WireMockTestExecutionListener.class);
+
+ @Override public void beforeTestClass(TestContext testContext) {
+ try {
+ if (wireMockConfigMissing(testContext)) {
+ return;
+ }
+ WireMockConfiguration wireMockConfiguration = wireMockConfiguration(testContext);
+ if (log.isDebugEnabled()) {
+ log.debug("WireMock configuration is running [" + wireMockConfiguration.isRunning() + "]");
+ }
+ if (!wireMockConfiguration.isRunning()) {
+ wireMockConfiguration.reset();
+ wireMockConfiguration.init();
+ wireMockConfiguration.start();
+ }
+ } catch (Exception e) {
+ if (log.isDebugEnabled()) {
+ log.debug("Exception occurred while trying to init WireMock configuration", e);
+ }
+ }
+ }
+
+ private boolean wireMockConfigMissing(TestContext testContext) {
+ boolean missing = !testContext.getApplicationContext().containsBean(WireMockConfiguration.class.getName());
+ if (log.isDebugEnabled()) {
+ log.debug("WireMockConfig is missing [" + missing + "]");
+ }
+ return missing;
+ }
+
+ @Override public void afterTestClass(TestContext testContext) {
+ try {
+ if (wireMockConfigMissing(testContext)) {
+ return;
+ }
+ stopWireMockConfiguration(testContext);
+ } catch (Exception e) {
+ if (log.isDebugEnabled()) {
+ log.debug("Exception occurred while trying to init WireMock configuration", e);
+ }
+ }
+ }
+
+ private void stopWireMockConfiguration(TestContext testContext) {
+ WireMockConfiguration wireMockConfiguration = wireMockConfiguration(testContext);
+ if (wireMockConfiguration.isRunning()) {
+ if (log.isDebugEnabled()) {
+ log.debug("WireMock is running, will stop it");
+ }
+ wireMockConfiguration.stop();
+ }
+ }
+
+ private WireMockConfiguration wireMockConfiguration(TestContext testContext) {
+ return testContext.getApplicationContext().getBean(WireMockConfiguration.class);
+ }
+}
diff --git a/spring-cloud-contract-wiremock/src/main/resources/META-INF/spring.factories b/spring-cloud-contract-wiremock/src/main/resources/META-INF/spring.factories
index 3ee4bf2e9f..b81224e5b8 100644
--- a/spring-cloud-contract-wiremock/src/main/resources/META-INF/spring.factories
+++ b/spring-cloud-contract-wiremock/src/main/resources/META-INF/spring.factories
@@ -7,3 +7,7 @@ org.springframework.boot.test.autoconfigure.restdocs.AutoConfigureRestDocs=\
org.springframework.cloud.contract.wiremock.restdocs.WireMockRestDocsConfiguration,\
org.springframework.cloud.contract.wiremock.restdocs.WireMockWebTestClientConfiguration,\
org.springframework.cloud.contract.wiremock.restdocs.WireMockRestAssuredConfiguration
+
+# Test Execution Listeners
+org.springframework.test.context.TestExecutionListener=\
+org.springframework.cloud.contract.wiremock.WireMockTestExecutionListener
\ No newline at end of file
diff --git a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockApplicationTests.java b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockApplicationTests.java
index c7169d2dfa..e884b39ab9 100644
--- a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockApplicationTests.java
+++ b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockApplicationTests.java
@@ -1,23 +1,24 @@
package org.springframework.cloud.contract.wiremock;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.context.junit4.SpringRunner;
-
import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
import static com.github.tomakehurst.wiremock.client.WireMock.get;
import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
import static org.assertj.core.api.Assertions.assertThat;
+import com.github.tomakehurst.wiremock.WireMockServer;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.web.client.RestTemplate;
+
@RunWith(SpringRunner.class)
@SpringBootTest(classes=WiremockTestsApplication.class, properties="app.baseUrl=http://localhost:${wiremock.server.port}", webEnvironment=WebEnvironment.NONE)
-@DirtiesContext
-@AutoConfigureWireMock(port = 5432)
+@AutoConfigureWireMock(port = 12345)
public class AutoConfigureWireMockApplicationTests {
@Autowired
diff --git a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockAutoStubsApplicationTests.java b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockAutoStubsApplicationTests.java
index ad0b1200d1..8007b897ef 100644
--- a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockAutoStubsApplicationTests.java
+++ b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockAutoStubsApplicationTests.java
@@ -12,7 +12,6 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(classes=WiremockTestsApplication.class, properties="app.baseUrl=http://localhost:${wiremock.server.port}", webEnvironment=WebEnvironment.NONE)
-@DirtiesContext
@AutoConfigureWireMock(port=0)
// Default stubs work at classpath:/mappings
public class AutoConfigureWireMockAutoStubsApplicationTests {
diff --git a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockConfigurationCustomizerTests.java b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockConfigurationCustomizerTests.java
index b79c65f012..1ab19f1d8a 100644
--- a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockConfigurationCustomizerTests.java
+++ b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockConfigurationCustomizerTests.java
@@ -18,7 +18,6 @@ import static org.assertj.core.api.Assertions.assertThat;
AutoConfigureWireMockConfigurationCustomizerTests.Config.class},
properties="app.baseUrl=http://localhost:${wiremock.server.port}",
webEnvironment=WebEnvironment.NONE)
-@DirtiesContext
@AutoConfigureWireMock(port=0, stubs="file:src/test/resources/io.stubs/mappings")
public class AutoConfigureWireMockConfigurationCustomizerTests {
diff --git a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockFilesApplicationTests.java b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockFilesApplicationTests.java
index 0ef3869b08..c3fea3d63a 100644
--- a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockFilesApplicationTests.java
+++ b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockFilesApplicationTests.java
@@ -12,7 +12,6 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(classes=WiremockTestsApplication.class, properties="app.baseUrl=http://localhost:${wiremock.server.port}", webEnvironment=WebEnvironment.NONE)
-@DirtiesContext
@AutoConfigureWireMock(port=0, files="classpath:/root/")
public class AutoConfigureWireMockFilesApplicationTests {
diff --git a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockFilesApplicationWithoutSlashTests.java b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockFilesApplicationWithoutSlashTests.java
index c1508f1d77..6f3f662a04 100644
--- a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockFilesApplicationWithoutSlashTests.java
+++ b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockFilesApplicationWithoutSlashTests.java
@@ -12,7 +12,6 @@ import static org.assertj.core.api.Assertions.assertThat;
@RunWith(SpringRunner.class)
@SpringBootTest(classes=WiremockTestsApplication.class, properties="app.baseUrl=http://localhost:${wiremock.server.port}", webEnvironment=WebEnvironment.NONE)
-@DirtiesContext
@AutoConfigureWireMock(port=0, files="classpath:root")
public class AutoConfigureWireMockFilesApplicationWithoutSlashTests {
diff --git a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockHttpsPortApplicationTests.java b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockHttpsPortApplicationTests.java
index de9f4e4ec2..d365408fa2 100644
--- a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockHttpsPortApplicationTests.java
+++ b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockHttpsPortApplicationTests.java
@@ -16,7 +16,6 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = WiremockTestsApplication.class, properties = "app.baseUrl=https://localhost:${wiremock.server.https-port}", webEnvironment = WebEnvironment.NONE)
-@DirtiesContext
@AutoConfigureWireMock(httpsPort = 9999, port=0)
public class AutoConfigureWireMockHttpsPortApplicationTests {
diff --git a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockPortApplicationTests.java b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockPortApplicationTests.java
index 63e49e3d2b..6c0282faba 100644
--- a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockPortApplicationTests.java
+++ b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockPortApplicationTests.java
@@ -16,7 +16,6 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = WiremockTestsApplication.class, properties = "app.baseUrl=http://localhost:${wiremock.server.port}", webEnvironment = WebEnvironment.NONE)
-@DirtiesContext
@AutoConfigureWireMock(port = 9999)
public class AutoConfigureWireMockPortApplicationTests {
diff --git a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockRandomPortApplicationTests.java b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockRandomPortApplicationTests.java
index aa0dbde681..dd45cc315f 100644
--- a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockRandomPortApplicationTests.java
+++ b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockRandomPortApplicationTests.java
@@ -1,22 +1,20 @@
package org.springframework.cloud.contract.wiremock;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.test.context.junit4.SpringRunner;
+
import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
import static com.github.tomakehurst.wiremock.client.WireMock.get;
import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
import static org.assertj.core.api.Assertions.assertThat;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.context.junit4.SpringRunner;
-
@RunWith(SpringRunner.class)
@SpringBootTest(classes=WiremockTestsApplication.class, properties="app.baseUrl=http://localhost:${wiremock.server.port}", webEnvironment=WebEnvironment.NONE)
-@DirtiesContext
@AutoConfigureWireMock(port=0)
public class AutoConfigureWireMockRandomPortApplicationTests {
diff --git a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockRandomPortHttpsApplicationTests.java b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockRandomPortHttpsApplicationTests.java
index c36d7e1996..97eb739c5e 100644
--- a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockRandomPortHttpsApplicationTests.java
+++ b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockRandomPortHttpsApplicationTests.java
@@ -16,7 +16,6 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(classes=WiremockTestsApplication.class, properties="app.baseUrl=https://localhost:${wiremock.server.https-port}", webEnvironment=WebEnvironment.NONE)
-@DirtiesContext
@AutoConfigureWireMock(port=0, httpsPort=0)
public class AutoConfigureWireMockRandomPortHttpsApplicationTests {
diff --git a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockSamePortApplicationTests.java b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockSamePortApplicationTests.java
new file mode 100644
index 0000000000..19add19d03
--- /dev/null
+++ b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockSamePortApplicationTests.java
@@ -0,0 +1,33 @@
+package org.springframework.cloud.contract.wiremock;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.get;
+import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
+import static org.assertj.core.api.Assertions.assertThat;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = WiremockTestsApplication.class, properties = "app.baseUrl=http://localhost:${wiremock.server.port}", webEnvironment = WebEnvironment.NONE)
+@AutoConfigureWireMock(port = 9999)
+// Should manage to register
+public class AutoConfigureWireMockSamePortApplicationTests {
+
+ @Autowired
+ private Service service;
+
+ @Test
+ public void contextLoads() throws Exception {
+ stubFor(get(urlEqualTo("/test2")).willReturn(aResponse()
+ .withHeader("Content-Type", "text/plain").withBody("Hello World2!")));
+ assertThat(this.service.go2()).isEqualTo("Hello World2!");
+ }
+
+}
diff --git a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockStubsAndFilesApplicationTests.java b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockStubsAndFilesApplicationTests.java
index 28f96987ab..cba4c7de6f 100644
--- a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockStubsAndFilesApplicationTests.java
+++ b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockStubsAndFilesApplicationTests.java
@@ -12,7 +12,6 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(classes=WiremockTestsApplication.class, properties="app.baseUrl=http://localhost:${wiremock.server.port}", webEnvironment=WebEnvironment.NONE)
-@DirtiesContext
@AutoConfigureWireMock(port=0, files="classpath:/root/", stubs="file:src/test/resources/io.stubs/mappings")
public class AutoConfigureWireMockStubsAndFilesApplicationTests {
diff --git a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockStubsAndMultipleFilesApplicationTests.java b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockStubsAndMultipleFilesApplicationTests.java
index 79a0ad2314..02389a3fbe 100644
--- a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockStubsAndMultipleFilesApplicationTests.java
+++ b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockStubsAndMultipleFilesApplicationTests.java
@@ -12,7 +12,6 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(classes=WiremockTestsApplication.class, properties="app.baseUrl=http://localhost:${wiremock.server.port}", webEnvironment=WebEnvironment.NONE)
-@DirtiesContext
@AutoConfigureWireMock(port=0, files={"classpath:/", "classpath:/root/", "classpath:/nonexistent/"}, stubs="file:src/test/resources/io.stubs/mappings")
public class AutoConfigureWireMockStubsAndMultipleFilesApplicationTests {
diff --git a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockStubsApplicationTests.java b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockStubsApplicationTests.java
index c286aec9be..1d7039f02e 100644
--- a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockStubsApplicationTests.java
+++ b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockStubsApplicationTests.java
@@ -12,7 +12,6 @@ import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(classes=WiremockTestsApplication.class, properties="app.baseUrl=http://localhost:${wiremock.server.port}", webEnvironment=WebEnvironment.NONE)
-@DirtiesContext
@AutoConfigureWireMock(port=0, stubs="file:src/test/resources/io.stubs/mappings")
public class AutoConfigureWireMockStubsApplicationTests {
diff --git a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockStubsApplicationWithSlashTests.java b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockStubsApplicationWithSlashTests.java
index cd24d33aa0..8f565d2f22 100644
--- a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockStubsApplicationWithSlashTests.java
+++ b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockStubsApplicationWithSlashTests.java
@@ -12,7 +12,6 @@ import static org.assertj.core.api.Assertions.assertThat;
@RunWith(SpringRunner.class)
@SpringBootTest(classes=WiremockTestsApplication.class, properties="app.baseUrl=http://localhost:${wiremock.server.port}", webEnvironment=WebEnvironment.NONE)
-@DirtiesContext
@AutoConfigureWireMock(port=0, stubs="file:src/test/resources/io.stubs/mappings/")
public class AutoConfigureWireMockStubsApplicationWithSlashTests {
diff --git a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/WiremockHttpsServerApplicationTests.java b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/WiremockHttpsServerApplicationTests.java
index 15d73ade30..05ecaa821b 100644
--- a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/WiremockHttpsServerApplicationTests.java
+++ b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/WiremockHttpsServerApplicationTests.java
@@ -18,7 +18,6 @@ import com.github.tomakehurst.wiremock.junit.WireMockClassRule;
@RunWith(SpringRunner.class)
@SpringBootTest(classes=WiremockTestsApplication.class, properties="app.baseUrl=https://localhost:8443")
-@DirtiesContext
public class WiremockHttpsServerApplicationTests {
@ClassRule
diff --git a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/WiremockServerApplicationTests.java b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/WiremockServerApplicationTests.java
index 062a7e9012..5a3da0fbbb 100644
--- a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/WiremockServerApplicationTests.java
+++ b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/WiremockServerApplicationTests.java
@@ -20,7 +20,6 @@ import static org.assertj.core.api.Assertions.assertThat;
@RunWith(SpringRunner.class)
@SpringBootTest(classes=WiremockTestsApplication.class, properties="app.baseUrl=http://localhost:5435", webEnvironment=WebEnvironment.NONE)
-@DirtiesContext
public class WiremockServerApplicationTests {
@ClassRule
diff --git a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/WiremockServerRestDocsApplicationTests.java b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/WiremockServerRestDocsApplicationTests.java
index 78eca9322a..4405cd49f7 100644
--- a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/WiremockServerRestDocsApplicationTests.java
+++ b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/WiremockServerRestDocsApplicationTests.java
@@ -39,7 +39,6 @@ import wiremock.org.eclipse.jetty.http.HttpStatus;
@SpringBootTest(classes = TestConfiguration.class)
@AutoConfigureRestDocs(outputDir = "target/snippets")
@AutoConfigureMockMvc
-@DirtiesContext
public class WiremockServerRestDocsApplicationTests {
@Autowired private MockMvc mockMvc;
diff --git a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/WiremockServerRestDocsMatcherApplicationTests.java b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/WiremockServerRestDocsMatcherApplicationTests.java
index 3017ce6dc6..67aa1252aa 100644
--- a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/WiremockServerRestDocsMatcherApplicationTests.java
+++ b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/WiremockServerRestDocsMatcherApplicationTests.java
@@ -30,7 +30,6 @@ import com.github.tomakehurst.wiremock.client.WireMock;
@SpringBootTest(classes = TestConfiguration.class)
@AutoConfigureRestDocs(outputDir = "target/snippets")
@AutoConfigureMockMvc
-@DirtiesContext
public class WiremockServerRestDocsMatcherApplicationTests {
@Autowired
diff --git a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/WiremockServerWebTestClientApplicationTests.java b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/WiremockServerWebTestClientApplicationTests.java
index d16d6c7c44..d69f682e0f 100644
--- a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/WiremockServerWebTestClientApplicationTests.java
+++ b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/WiremockServerWebTestClientApplicationTests.java
@@ -26,7 +26,6 @@ import wiremock.org.eclipse.jetty.http.HttpStatus;
@ContextConfiguration(classes = TestConfiguration.class)
@AutoConfigureRestDocs(outputDir = "target/snippets/webtestclient")
@AutoConfigureWebTestClient
-@DirtiesContext
public class WiremockServerWebTestClientApplicationTests {
@Autowired
diff --git a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/WiremockTestsApplication.java b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/WiremockTestsApplication.java
index 2b22fe1708..92c453df68 100644
--- a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/WiremockTestsApplication.java
+++ b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/WiremockTestsApplication.java
@@ -51,7 +51,7 @@ class Controller {
class Service {
@Value("${app.baseUrl:http://example.org}")
- private String base;
+ String base;
private RestTemplate restTemplate;
@@ -76,6 +76,10 @@ class Service {
.map(MediaType::valueOf).toArray(MediaType[]::new);
}
+ public String go2() {
+ return this.restTemplate.getForEntity(this.base + "/test2", String.class).getBody();
+ }
+
public void setBase(String base) {
this.base = base;
}
diff --git a/spring-cloud-contract-wiremock/src/test/resources/application.yml b/spring-cloud-contract-wiremock/src/test/resources/application.yml
new file mode 100644
index 0000000000..95382003b1
--- /dev/null
+++ b/spring-cloud-contract-wiremock/src/test/resources/application.yml
@@ -0,0 +1,3 @@
+logging:
+ level:
+ org.springframework.cloud.contract: debug
\ No newline at end of file
diff --git a/tests/samples-messaging-integration/src/test/groovy/com/example/IntegrationMessagingApplicationSpec.groovy b/tests/samples-messaging-integration/src/test/groovy/com/example/IntegrationMessagingApplicationSpec.groovy
index a50b850083..b3a5ec34e3 100644
--- a/tests/samples-messaging-integration/src/test/groovy/com/example/IntegrationMessagingApplicationSpec.groovy
+++ b/tests/samples-messaging-integration/src/test/groovy/com/example/IntegrationMessagingApplicationSpec.groovy
@@ -25,7 +25,6 @@ import org.springframework.cloud.contract.verifier.messaging.MessageVerifier
import org.springframework.cloud.contract.verifier.messaging.boot.AutoConfigureMessageVerifier
import org.springframework.cloud.contract.verifier.messaging.internal.ContractVerifierObjectMapper;
import org.springframework.messaging.Message
-import org.springframework.test.annotation.DirtiesContext
import org.springframework.test.context.ContextConfiguration
import spock.lang.Specification
@@ -35,9 +34,8 @@ import com.jayway.jsonpath.JsonPath
import com.toomuchcoding.jsonassert.JsonAssertion
// Context configuration would end up in base class
@ContextConfiguration(classes = [IntegrationMessagingApplication], loader = SpringBootContextLoader)
-@DirtiesContext
@AutoConfigureMessageVerifier
-public class IntegrationMessagingApplicationSpec extends Specification {
+class IntegrationMessagingApplicationSpec extends Specification {
// ALL CASES
@Inject MessageVerifier> contractVerifierMessaging
diff --git a/tests/samples-messaging-spring/src/test/groovy/com/example/SpringApplicationSpec.groovy b/tests/samples-messaging-spring/src/test/groovy/com/example/SpringApplicationSpec.groovy
index fcb16bc994..402fd0e8dd 100644
--- a/tests/samples-messaging-spring/src/test/groovy/com/example/SpringApplicationSpec.groovy
+++ b/tests/samples-messaging-spring/src/test/groovy/com/example/SpringApplicationSpec.groovy
@@ -25,8 +25,7 @@ import org.springframework.cloud.contract.spec.Contract
import org.springframework.cloud.contract.verifier.messaging.MessageVerifier
import org.springframework.cloud.contract.verifier.messaging.boot.AutoConfigureMessageVerifier
import org.springframework.cloud.contract.verifier.messaging.internal.ContractVerifierObjectMapper;
-import org.springframework.messaging.Message;
-import org.springframework.test.annotation.DirtiesContext
+import org.springframework.messaging.Message
import org.springframework.test.context.ContextConfiguration
import spock.lang.Specification
@@ -40,9 +39,8 @@ import com.toomuchcoding.jsonassert.JsonAssertion
*/
// Context configuration would end up in base class
@ContextConfiguration(classes = [SpringMessagingApplication], loader = SpringBootContextLoader)
-@DirtiesContext
@AutoConfigureMessageVerifier
-public class SpringApplicationSpec extends Specification {
+class SpringApplicationSpec extends Specification {
// ALL CASES
@Inject MessageVerifier> contractVerifierMessaging
diff --git a/tests/samples-messaging-stream/src/test/groovy/com/example/StreamMessagingApplicationSpec.groovy b/tests/samples-messaging-stream/src/test/groovy/com/example/StreamMessagingApplicationSpec.groovy
index abcf7f3a9b..ca305ee7ee 100644
--- a/tests/samples-messaging-stream/src/test/groovy/com/example/StreamMessagingApplicationSpec.groovy
+++ b/tests/samples-messaging-stream/src/test/groovy/com/example/StreamMessagingApplicationSpec.groovy
@@ -27,7 +27,6 @@ import org.springframework.cloud.contract.verifier.messaging.MessageVerifier
import org.springframework.cloud.contract.verifier.messaging.boot.AutoConfigureMessageVerifier
import org.springframework.cloud.contract.verifier.messaging.internal.ContractVerifierObjectMapper
import org.springframework.messaging.Message
-import org.springframework.test.annotation.DirtiesContext
import org.springframework.test.context.ContextConfiguration
import spock.lang.Specification
@@ -37,7 +36,6 @@ import javax.inject.Inject
*/
// Context configuration would end up in base class
@ContextConfiguration(classes = [StreamMessagingApplication], loader = SpringBootContextLoader)
-@DirtiesContext
@SpringBootTest(properties = "debug=true")
@AutoConfigureMessageVerifier
class StreamMessagingApplicationSpec extends Specification {
diff --git a/tests/spring-cloud-contract-stub-runner-boot-eureka/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/eureka/StubRunnerSpringCloudEurekaAutoConfigurationSpec.groovy b/tests/spring-cloud-contract-stub-runner-boot-eureka/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/eureka/StubRunnerSpringCloudEurekaAutoConfigurationSpec.groovy
index 5bb90fd8a8..076628cb8a 100644
--- a/tests/spring-cloud-contract-stub-runner-boot-eureka/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/eureka/StubRunnerSpringCloudEurekaAutoConfigurationSpec.groovy
+++ b/tests/spring-cloud-contract-stub-runner-boot-eureka/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/eureka/StubRunnerSpringCloudEurekaAutoConfigurationSpec.groovy
@@ -32,7 +32,6 @@ import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.http.HttpMethod
import org.springframework.http.client.ClientHttpResponse
-import org.springframework.test.annotation.DirtiesContext
import org.springframework.test.context.ContextConfiguration
import org.springframework.web.client.*
import spock.lang.AutoCleanup
@@ -58,7 +57,6 @@ import spock.util.concurrent.PollingConditions
"org.springframework.cloud.contract.verifier.stubs:bootService"],
repositoryRoot = "classpath:m2repo/repository/",
stubsMode = StubRunnerProperties.StubsMode.REMOTE)
-@DirtiesContext
class StubRunnerSpringCloudEurekaAutoConfigurationSpec extends Specification {
@Autowired StubFinder stubFinder
diff --git a/tests/spring-cloud-contract-stub-runner-boot-zookeeper/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/zookeeper/StubRunnerSpringCloudZookeeperAutoConfigurationSpec.groovy b/tests/spring-cloud-contract-stub-runner-boot-zookeeper/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/zookeeper/StubRunnerSpringCloudZookeeperAutoConfigurationSpec.groovy
index 42b5574a45..a1ead5b9d7 100644
--- a/tests/spring-cloud-contract-stub-runner-boot-zookeeper/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/zookeeper/StubRunnerSpringCloudZookeeperAutoConfigurationSpec.groovy
+++ b/tests/spring-cloud-contract-stub-runner-boot-zookeeper/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/zookeeper/StubRunnerSpringCloudZookeeperAutoConfigurationSpec.groovy
@@ -32,7 +32,6 @@ import org.springframework.cloud.zookeeper.ZookeeperProperties
import org.springframework.cloud.zookeeper.discovery.ZookeeperDiscoveryClient
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
-import org.springframework.test.annotation.DirtiesContext
import org.springframework.test.context.ContextConfiguration
import org.springframework.util.SocketUtils
import org.springframework.web.client.RestTemplate
@@ -51,7 +50,6 @@ import spock.lang.Specification
"org.springframework.cloud.contract.verifier.stubs:bootService"],
repositoryRoot = "classpath:m2repo/repository/",
stubsMode = StubRunnerProperties.StubsMode.REMOTE)
-@DirtiesContext
class StubRunnerSpringCloudZookeeperAutoConfigurationSpec extends Specification {
@Autowired StubFinder stubFinder
diff --git a/tests/spring-cloud-contract-stub-runner-context-path/src/test/java/com/example/loan/LoanApplicationServiceTests.java b/tests/spring-cloud-contract-stub-runner-context-path/src/test/java/com/example/loan/LoanApplicationServiceTests.java
index 821ecf0878..f3ed2d3174 100644
--- a/tests/spring-cloud-contract-stub-runner-context-path/src/test/java/com/example/loan/LoanApplicationServiceTests.java
+++ b/tests/spring-cloud-contract-stub-runner-context-path/src/test/java/com/example/loan/LoanApplicationServiceTests.java
@@ -10,7 +10,6 @@ import org.springframework.boot.web.server.LocalServerPort;
import org.springframework.cloud.contract.stubrunner.StubFinder;
import org.springframework.cloud.contract.stubrunner.spring.AutoConfigureStubRunner;
import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties;
-import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.web.client.RestTemplate;
@@ -27,7 +26,6 @@ import static org.assertj.core.api.Assertions.assertThat;
@AutoConfigureStubRunner(repositoryRoot = "classpath:m2repo/repository/",
ids = { "org.springframework.cloud.contract.verifier.stubs:contextPathFraudDetectionServer" },
stubsMode = StubRunnerProperties.StubsMode.REMOTE)
-@DirtiesContext
public class LoanApplicationServiceTests {
// end::autoconfigure_stubrunner[]
diff --git a/tests/spring-cloud-contract-stub-runner-moco/src/test/groovy/org/springframework/cloud/contract/stubrunner/provider/moco/MocoHttpServerStubSpec.groovy b/tests/spring-cloud-contract-stub-runner-moco/src/test/groovy/org/springframework/cloud/contract/stubrunner/provider/moco/MocoHttpServerStubSpec.groovy
index 69550ed7be..0289147173 100644
--- a/tests/spring-cloud-contract-stub-runner-moco/src/test/groovy/org/springframework/cloud/contract/stubrunner/provider/moco/MocoHttpServerStubSpec.groovy
+++ b/tests/spring-cloud-contract-stub-runner-moco/src/test/groovy/org/springframework/cloud/contract/stubrunner/provider/moco/MocoHttpServerStubSpec.groovy
@@ -29,7 +29,6 @@ import org.springframework.cloud.stream.messaging.Sink
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.stereotype.Component
-import org.springframework.test.annotation.DirtiesContext
import org.springframework.test.context.ActiveProfiles
import org.springframework.test.context.ContextConfiguration
import spock.lang.Specification
@@ -43,7 +42,6 @@ import spock.lang.Specification
@AutoConfigureStubRunner( ids = ["com.example:fraudDetectionServerMoco"],
stubsMode = StubRunnerProperties.StubsMode.CLASSPATH)
// end::[classpath_stub_runner]
-@DirtiesContext
@ActiveProfiles("test")
class MocoHttpServerStubSpec extends Specification {