Removed dirties context on any tests

This commit is contained in:
Marcin Grzejszczak
2018-08-08 18:00:58 +02:00
73 changed files with 343 additions and 113 deletions

View File

@@ -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 {
----

View File

@@ -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 {
----

View File

@@ -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

View File

@@ -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[]

View File

@@ -1,3 +1,5 @@
server:
port: 6565
logging.level.org.springframework.cloud.contract: DEBUG
logging:
level:
org.springframework.cloud.contract: debug

View File

@@ -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

View File

@@ -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;
}
}

View File

@@ -28,7 +28,6 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
@AutoConfigureRestDocs(outputDir = "target/snippets")
@AutoConfigureMockMvc
@AutoConfigureJsonTesters
@DirtiesContext
public class StubGeneratorTests {
@Autowired

View File

@@ -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

View File

@@ -28,7 +28,6 @@ import static org.springframework.cloud.contract.wiremock.restdocs.WireMockWebTe
@AutoConfigureRestDocs(outputDir = "target/snippets")
@AutoConfigureWebTestClient
@AutoConfigureJsonTesters
@DirtiesContext
public class StubGeneratorTests {
@Autowired

View File

@@ -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

View File

@@ -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[]

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -15,7 +15,6 @@ import org.springframework.web.client.RestTemplate;
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment=WebEnvironment.NONE)
@DirtiesContext
public class WiremockMockServerApplicationTests {
@Autowired

View File

@@ -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

View File

@@ -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

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -15,7 +15,6 @@ import org.springframework.web.client.RestTemplate;
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment=WebEnvironment.NONE)
@DirtiesContext
public class WiremockMockServerApplicationTests {
@Autowired

View File

@@ -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

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -15,7 +15,6 @@ import org.springframework.web.client.RestTemplate;
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment=WebEnvironment.NONE)
@DirtiesContext
public class WiremockMockServerApplicationTests {
@Autowired

View File

@@ -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

View File

@@ -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:

View File

@@ -82,6 +82,11 @@
<groupId>com.jcraft</groupId>
<artifactId>jsch.agentproxy.usocket-jna</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure-processor</artifactId>

View File

@@ -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<StubServer> 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<Contract> contracts) {

View File

@@ -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() + '}';
}
}

View File

@@ -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<ApplicationContext, Map<WireMockHttpServerStub, PortAndMappings>> STUBS = new ConcurrentHashMap<>();
@Override public void beforeTestClass(TestContext testContext) {
Map<WireMockHttpServerStub, PortAndMappings> 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<WireMockHttpServerStub, PortAndMappings> entry : stubs.entrySet()) {
while (entry.getKey().isRunning()) {
entry.getKey().stop();
}
List<StubMapping> 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();
}
}
}

View File

@@ -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<WireMockHttpServerStub, PortAndMappings> 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<StubMapping>()));
}
return this;
}
@@ -159,20 +168,25 @@ public class WireMockHttpServerStub implements HttpServerStub {
}
private void registerStubMappings(Collection<File> 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<File> sortedMappings, WireMock wireMock) {
List<StubMapping> 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<StubMapping> 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<StubMapping> mappings;
PortAndMappings(Integer port, List<StubMapping> mappings) {
this.port = port;
this.mappings = mappings;
}
@Override public String toString() {
return "PortAndMappings{" + "port=" + this.port + ", mappings=" + this.mappings.size() + '}';
}
}

View File

@@ -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
org.springframework.cloud.contract.stubrunner.messaging.StubRunnerStreamsIntegrationAutoConfiguration
# Test Execution Listeners
org.springframework.test.context.TestExecutionListener=\
org.springframework.cloud.contract.stubrunner.provider.wiremock.StubRunnerWireMockTestExecutionListener

View File

@@ -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 {

View File

@@ -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

View File

@@ -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[]

View File

@@ -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[]

View File

@@ -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

View File

@@ -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 {

View File

@@ -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<Resource> 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");
}
}
}

View File

@@ -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);
}
}

View File

@@ -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

View File

@@ -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

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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!");
}
}

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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

View File

@@ -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

View File

@@ -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;

View File

@@ -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

View File

@@ -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

View File

@@ -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;
}

View File

@@ -0,0 +1,3 @@
logging:
level:
org.springframework.cloud.contract: debug

View File

@@ -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<Message<?>> contractVerifierMessaging

View File

@@ -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<Message<?>> contractVerifierMessaging

View File

@@ -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 {

View File

@@ -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

View File

@@ -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

View File

@@ -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[]

View File

@@ -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 {