0
@ActiveProfiles("it")
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ContextConfiguration(classes = ServiceApplication.class)
@AutoConfigureWireMock(port = 0)
@TestPropertySource(properties = {
        "server.servlet.context-path=http://localhost:${wiremock.server.port}/abc"
})
public class ABCTest {

    
    @Autowired
    protected TestRestTemplate restTemplate;

    private static final String INIT_URL = "/init";

    private static final String JSON_RESPONSE = """
            {"result":...
            "generatedAt":"2025-10-06T06:46:28.745Z"}
    """;

    @BeforeClass
    public void beforeClass() {
    }

    @Test
    public void init() throws IOException {


        stubFor(get(urlEqualTo("/abc" + INIT_URL))
                .willReturn(aResponse()
                        .withStatus(status)
                        .withHeader("Content-Type", "application/json")
                        .withBody(JSON_RESPONSE)));

        HttpHeaders headers = new HttpHeaders();
        headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
        headers.add("X-API-KEY", apiKey);
        HttpEntity<String> entity = new HttpEntity<>("body", headers);
        ResponseEntity<String> response = restTemplate.exchange(INIT_URL, HttpMethod.GET, entity, String.class);

        System.out.println(response.getBody());
       
    }

I received this:

wiremock.org.apache.hc.client5.http.HttpHostConnectException: Connect to http://localhost:8080 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused

    at java.base/sun.nio.ch.Net.pollConnect(Native Method)
    at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:682)
    at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:549)
    at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:592)
    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
    at java.base/java.net.Socket.connect(Socket.java:751)
    at wiremock.org.apache.hc.client5.http.socket.PlainConnectionSocketFactory$1.run(PlainConnectionSocketFactory.java:87)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:571)

i used spring-cloud-contract-wiremock-4.3.0.jar and spring-boot-test-3.5.4.jar

1
  • 2
    Your configuration is weird. Why the server.servlet.context-path? That doesn't make sense. Commented Oct 6 at 14:26

1 Answer 1

2

as M. Deinum pointed out, the server.servlet.context-path property is weird.

Just remove the @TestPropertySource annotation from your test class.

For more information, see my explanation below. Also, if the issue persists, please provide us more details regarding your project, like Java version, settings for the "it" Profile, and so on.

I tried to reproduce your project as close as I can, here are my versions & dependencies:

  • Java version: JDK17

  • Spring Boot: 3.5.4

  • Spring Cloud: 2024.0.1

  • My dependencies: spring-boot-starter-web, spring-boot-starter-test (test scope), spring-cloud-starter-contract-stub-runner (test scope), wiremock-jre8-standalone (test scope)


Just removing the @TestPropertySource annotation with the server.servlet.context-path property:

@ActiveProfiles("it")
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ContextConfiguration(classes = ServiceApplication.class)
@AutoConfigureWireMock(port = 0)
public class ABCTest {
   // ...
}

Made my test green:

mvn test -Dtest=ABCTest

# ...
2025-10-07T11:45:34.345+02:00 DEBUG 41774 --- [spring-wiremock-demo-it] [           main] o.s.c.c.wiremock.WireMockConfiguration   : Server [com.github.tomakehurst.wiremock.WireMockServer@68479e8b] is already running at http port [10435] / https port [12650]
2025-10-07T11:45:34.345+02:00 DEBUG 41774 --- [spring-wiremock-demo-it] [           main] o.s.c.c.wiremock.WireMockConfiguration   : Server [com.github.tomakehurst.wiremock.WireMockServer@68479e8b] is already running at http port [10435] / https port [12650]. It has [1] mappings registered
2025-10-07T11:45:34.802+02:00  INFO 41774 --- [spring-wiremock-demo-it] [o-auto-1-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2025-10-07T11:45:34.802+02:00  INFO 41774 --- [spring-wiremock-demo-it] [o-auto-1-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2025-10-07T11:45:34.803+02:00  INFO 41774 --- [spring-wiremock-demo-it] [o-auto-1-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 1 ms
{"timestamp":"2025-10-07T09:45:34.825+00:00","status":404,"error":"Not Found","path":"/init"}
2025-10-07T11:45:34.855+02:00 DEBUG 41774 --- [spring-wiremock-demo-it] [           main] o.s.c.c.w.WireMockTestExecutionListener  : WireMockConfiguration is missing [false]
2025-10-07T11:45:34.861+02:00 DEBUG 41774 --- [spring-wiremock-demo-it] [           main] o.s.c.c.w.WireMockTestExecutionListener  : WireMockConfiguration is missing [false]
2025-10-07T11:45:34.861+02:00 DEBUG 41774 --- [spring-wiremock-demo-it] [           main] o.s.c.c.w.WireMockTestExecutionListener  : Http port [10435] dynamic [true] https port [12650] dynamic [true]
2025-10-07T11:45:34.861+02:00 DEBUG 41774 --- [spring-wiremock-demo-it] [           main] o.s.c.c.w.WireMockTestExecutionListener  : Resetting mappings for the next test to restart them. That's necessary when reusing the same context with new servers running on random ports
2025-10-07T11:45:34.861+02:00 DEBUG 41774 --- [spring-wiremock-demo-it] [           main] o.s.c.c.wiremock.WireMockConfiguration   : Stopping server [com.github.tomakehurst.wiremock.WireMockServer@68479e8b] at port [12650]
2025-10-07T11:45:34.865+02:00 DEBUG 41774 --- [spring-wiremock-demo-it] [           main] o.s.c.c.wiremock.WireMockConfiguration   : Stopped WireMock [com.github.tomakehurst.wiremock.WireMockServer@68479e8b] instance port [12650]
2025-10-07T11:45:34.869+02:00 DEBUG 41774 --- [spring-wiremock-demo-it] [           main] o.s.c.c.wiremock.WireMockConfiguration   : Server [com.github.tomakehurst.wiremock.WireMockServer@68479e8b] is already running at http port [10435] / https port [12650]. It has [2] mappings registered
2025-10-07T11:45:34.869+02:00 DEBUG 41774 --- [spring-wiremock-demo-it] [           main] o.s.c.c.wiremock.WireMockConfiguration   : Started server [com.github.tomakehurst.wiremock.WireMockServer@68479e8b] at http port [10435] and https port [12650]
2025-10-07T11:45:34.869+02:00 DEBUG 41774 --- [spring-wiremock-demo-it] [           main] o.s.c.c.wiremock.WireMockConfiguration   : WireMock server has [2] stubs registered
2025-10-07T11:45:34.870+02:00 DEBUG 41774 --- [spring-wiremock-demo-it] [           main] o.s.c.c.wiremock.WireMockConfiguration   : Will register [0] stub locations
2025-10-07T11:45:34.871+02:00 DEBUG 41774 --- [spring-wiremock-demo-it] [           main] o.s.c.c.wiremock.WireMockConfiguration   : WireMock server has [1] stubs registered
2025-10-07T11:45:34.871+02:00 DEBUG 41774 --- [spring-wiremock-demo-it] [           main] o.s.c.c.wiremock.WireMockConfiguration   : Server [com.github.tomakehurst.wiremock.WireMockServer@68479e8b] is already running at http port [10435] / https port [12650]. It has [1] mappings registered
2025-10-07T11:45:34.873+02:00 DEBUG 41774 --- [spring-wiremock-demo-it] [           main] .StubRunnerWireMockTestExecutionListener : No @AutoConfigureStubRunner annotation found on [class com.example.springwiremock.integration.ABCTest]. Skipping
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.053 s -- in com.example.springwiremock.integration.ABCTest
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  5.146 s
[INFO] Finished at: 2025-10-07T11:45:35+02:00
[INFO] ------------------------------------------------------------------------
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.