@disabled 是 junit 5 中临时跳过测试的注解,适用于逻辑有 bug、依赖外部服务不可用、ci 频繁失败或功能废弃等场景,加在方法或类上并推荐注明原因,替代已弃用的 junit 4 @ignore。

在 Java 单元测试中(特别是 JUnit 5),@Disabled 是用来临时跳过某个测试方法或整个测试类的最直接方式,常用于失效、未完成、环境依赖或暂时不稳定的用例。
什么时候该用 @Disabled?
适用于以下情况:
- 测试逻辑有 bug,暂时无法修复,但又不想删掉代码
- 测试依赖外部服务(如数据库、HTTP 接口),当前环境不可用
- 测试在 CI 环境中频繁失败,需临时屏蔽以保障主流程通过
- 功能已废弃,但测试尚未清理
怎么加 @Disabled?
直接加在测试方法或测试类上即可,无需参数(也可加说明):
@Test
@Disabled // 无理由跳过(不推荐,建议写原因)
void testSomething() { ... }
@Test
@Disabled("暂不支持 IPv6 地址解析") // 推荐:说明跳过原因
void testWithIPv6() { ... }
@Disabled("整个类暂未适配新协议") // 作用于整个类
class NetworkIntegrationTests { ... }
注意和 @Ignore 的区别
JUnit 4 的 @Ignore 在 JUnit 5 中已被弃用,必须改用 @Disabled。如果项目还在混合使用 JUnit 4 和 5,要确认测试运行器是 JUnitPlatform(Maven Surefire 插件需配置 junit-jupiter 引擎),否则 @Disabled 不生效。
跳过效果和运行表现
被 @Disabled 标记的测试:
- 不会执行,不计入“失败”或“错误”,而是显示为 skipped(跳过)
- IDE(如 IntelliJ)中会显示斜体或禁用图标,鼠标悬停可看到原因
- Maven 执行
mvn test时会在控制台输出跳过数量,报告中单独统计 skipped 项
不复杂但容易忽略:记得定期清理或跟进 @Disabled 的用例,避免长期“假性稳定”。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











