@Disabled用于临时跳过测试方法或类,不删除代码且不影响编译;可选填原因字符串,优先级高于@EnabledIf/@DisabledIf,不可与@TestFactory共用,需注意上线前清理。

在 Java 的 JUnit 5 中,@Disabled 是一个非常轻量、直观的注解,用于临时跳过某个测试方法或整个测试类,避免其执行。它不会删除代码,也不影响编译,适合调试、重构或等待依赖就绪时使用。
给单个测试方法禁用
只需在测试方法上添加 @Disabled 注解(可选带原因说明),JUnit 运行时会自动跳过该方法,并在测试报告中标记为“disabled”:
@Test
@Disabled("尚未实现登录逻辑")
void testLogin() {
// 暂不运行
}原因字符串不是必须的,但建议填写,便于团队理解跳过意图。
禁用整个测试类
把 @Disabled 放在类声明上,该类下所有 @Test 方法都会被跳过:
立即学习“Java免费学习笔记(深入)”;
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
@Disabled("订单模块接口暂不可用")
class OrderServiceTest {
@Test void testCreateOrder() { /* ... */ }
@Test void testCancelOrder() { /* ... */ }
}注意:类上的 @Disabled 不会影响其他测试类,作用范围仅限当前类。
和其它注解配合使用的注意事项
@Disabled 可与 @Test、@ParameterizedTest、@RepeatedTest 等共存,但不能和 @TestFactory(动态测试生成)一起用——因为 @TestFactory 方法本身不直接对应具体测试执行,禁用它无实际意义。
- 若同时存在
@EnabledIf或@DisabledIf,@Disabled优先级更高,会直接跳过 - IDE(如 IntelliJ)通常会在方法名旁显示灰色图标,提示已被禁用
- Maven/Gradle 执行
test时,禁用的测试不会计入失败数,但会出现在测试摘要中(如 “1 disabled”)
替代方案对比:什么时候不用 @Disabled
如果只是想跳过“暂时不稳定的测试”,更推荐用 @Tag + 测试配置过滤;如果测试因环境缺失而无法运行(比如缺少数据库),应改用条件化启用(如 @EnabledIfSystemProperty)。而 @Disabled 的核心定位就是:**明确、临时、人工控制的跳过**。
它不复杂但容易忽略细节——比如忘记删掉上线前的 @Disabled,所以建议搭配代码审查或 CI 阶段扫描禁用注解的检查机制。

















