如何在Spring Boot开发模式下嵌入WireMock运行?
在Spring Boot开发模式下嵌入式启动WireMock(配合Gradle bootTestRun)
步骤1:添加WireMock依赖
在build.gradle中引入适配Spring Boot的WireMock依赖,按需选择:
dependencies { // 带Spring Cloud Contract支持的Starter(推荐,适配性更强) implementation 'org.springframework.cloud:spring-cloud-starter-contract-stub-runner' // 仅核心WireMock依赖(无需Contract功能时使用) implementation 'com.github.tomakehurst:wiremock-jre8-standalone:2.35.0' }
步骤2:编写自动配置类
创建常规Spring配置类,替代测试专用的@AutoConfigureWireMock,让WireMock随应用启动:
import com.github.tomakehurst.wiremock.WireMockServer; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration // 可通过配置开关控制启动,默认开启 @ConditionalOnProperty(name = "wiremock.enabled", havingValue = "true", matchIfMissing = true) @ConfigurationProperties(prefix = "wiremock") public class WireMockAutoConfiguration { private int port = 8081; // 默认端口,可配置覆盖 private String stubsDir = "classpath:/wiremock/stubs"; // Stub文件存放目录 @Bean(destroyMethod = "stop") public WireMockServer wireMockServer() { WireMockServer server = new WireMockServer(port); server.loadMappingsFrom(stubsDir); server.start(); System.out.println("WireMock嵌入式服务启动完成,端口:" + server.port()); return server; } // Getter、Setter方法 public int getPort() { return port; } public void setPort(int port) { this.port = port; } public String getStubsDir() { return stubsDir; } public void setStubsDir(String stubsDir) { this.stubsDir = stubsDir; } }
步骤3:自定义配置(可选)
在application.yml或application.properties中调整WireMock参数:
wiremock: port: 9090 # 自定义启动端口 stubs-dir: "classpath:/custom-stubs" # 自定义Stub文件路径
步骤4:通过Gradle bootTestRun启动
直接执行Gradle任务,WireMock会随应用自动启动:
./gradlew bootTestRun
额外说明
- 若仅需在测试环境启动WireMock,可给配置类添加
@Profile("test")注解,仅激活test profile时生效。 - 放在指定目录的JSON格式Stub文件会被自动加载,代码中直接调用WireMock端口即可访问模拟接口。
内容的提问来源于stack exchange,提问作者SetNug
相关产品推荐
相关产品推荐

