You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 12:32:38