@SpringBootTest

1.源码

复制代码
public static enum WebEnvironment {
    MOCK(false),
    RANDOM_PORT(true),
    DEFINED_PORT(true),
    NONE(false);

    private final boolean embedded;

    private WebEnvironment(boolean embedded) {
        this.embedded = embedded;
    }

    public boolean isEmbedded() {
        return this.embedded;
    }
}

2.模式

@SpringBootTest有如上四种模式:

  • MOCK:模拟了一个Servlet运行环境,只运行Spring容器,真正的Tomcat服务器不启动,因此不能监听端口。它可以直接测试代码,不走真实网络。
  • RANDOM_PORT:和开发环境一样,Tomcat服务器启动,Spring容器运行在Tomcat服务器中,但监听端口随机。
  • DEFINED_PORT:和RANDOM_PORT相比,指定监听端口。
  • NONE:和MOCK相比,没有Web环境,和web相关的Controller层无法测试,Service、Mapper等测试不影响。

@SpringBootTest默认是MOCK模式,也可自行指定环境:

java 复制代码
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)

3.@SpringBootTest报错常见原因

1.未指定启动类

手动指定即可

java 复制代码
@SpringBootTest(classes = StartApplication.class)

2.默认测试环境没有相关依赖

比如项目开发环境注册了WebSocket Server Bean,而这个对象启动需要ServerContainer ,但这个WebSocket容器在Tomcat才有。SpringBootTest默认是MOCK模式,Tomcat都没启动,所以报错。

可选择RANDOM_PORT或DEFINED_PORT运行即可。

复制代码
@SpringBootTest(classes = StartApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
相关推荐
wangchunyu1141 小时前
JAVA CompletableFuture异步编程实战
java·开发语言·python
paopaokaka_luck2 小时前
流浪动物救助与收养系统(DeepSeek AI对话、 ECharts多维分析、救助流程衔接、领养与回访衔接、 捐赠确认与公示、志愿者协作)
java·前端·javascript·人工智能·mysql·echarts·推荐算法
Thomas.Sir2 小时前
第9课:SpringBoot4.x Web开发基础:WebMvc自动配置、静态资源、请求参数接收
java·spring boot
程序 代码狂人2 小时前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法
2501_944521593 小时前
Deepmerge 跨端三方库仓颉适配全流程
java·python·eclipse·github
南归北隐4 小时前
Spring AI Alibaba Graph框架实现MCP数据库查询实战
java·后端·spring ai·mcp·spring ai mcp
古法老登瞎折腾4 小时前
大数据智能运维实战(九):让 AI 查日志——找到异常,也保留上下文
java·大数据·运维·人工智能·spring ai·mcp
ai大模型-探索者4 小时前
Function Call与MCP(区别、联系与实战)
java·服务器·网络
略略略咯咯5 小时前
啊啊啊啊啊
java·服务器·数据库
SL_staff5 小时前
运维救火实战:钉钉API变更致薪资计算中断,如何用可视化逻辑引擎5分钟热修复
java·开源·全栈