@Disabled 是 JUnit 5 中临时跳过测试的官方注解,可标注在方法或类上并支持原因说明;它替代了 JUnit 4 的 @Test(enabled = false),被标记的测试不执行但计入跳过统计。

在 JUnit 5 中,@Disabled 是最直接、最标准的方式临时跳过某个测试方法或整个测试类,无需删除代码,也不影响编译和构建流程。
用在单个测试方法上
只需在测试方法上添加 @Disabled 注解,JUnit 就会忽略该方法的执行,并在测试报告中标记为“已禁用”。可选地传入一个字符串参数说明原因,便于团队理解:
@Test
@Disabled("尚未实现登录逻辑")
void testLoginWithValidCredentials() {
// 暂未编写
}
用在测试类上跳过全部测试
若整个类处于重构中或依赖服务不可用,可将 @Disabled 加在类声明处,所有 @Test 方法都会被跳过:
@Disabled("第三方支付接口暂未联调完成")
class PaymentServiceTest {
@Test void testPaySuccess() { ... }
@Test void testPayFailure() { ... }
}
注意与 @Test(enabled = false) 的区别
这是 JUnit 4 的写法,JUnit 5 已移除 enabled 属性。继续使用会导致编译错误或静默失效。务必改用 @Disabled —— 它是 JUnit 5 的正式替代方案,语义清晰且支持 IDE 和构建工具(如 Maven Surefire)正确识别。
立即学习“Java免费学习笔记(深入)”;
运行时行为与报告表现
被 @Disabled 标记的测试不会执行,也不会计入失败数,但会出现在测试结果汇总中(通常显示为“skipped”或“disabled”)。Maven 执行 mvn test 时仍会扫描这些方法,只是跳过调用;IDE(如 IntelliJ 或 VS Code)也会在测试面板中用灰色图标或“Disabled”标签标识。
如果只想跳过特定环境下的测试(如跳过 CI 中的慢测试),应结合 @Tag 和配置过滤,而非滥用 @Disabled —— 后者专用于明确“暂时不运行”,不是条件化执行的机制。


















