@disabled是junit 5中用于禁用测试方法或类的注解,等同于junit 4的@ignore但语义更清晰,可选原因说明,运行时标记为skipped;支持作用于方法或整个类,不可用于生命周期方法。

@Disabled 是 JUnit 5 中用于临时禁用测试方法或测试类的注解,作用等同于 JUnit 4 的 @Ignore,但语义更清晰、命名更规范。它不会跳过执行,而是明确标记该测试“被禁用”,运行时会显示为 skipped(跳过),且附带可选原因说明。
✅ 正确使用 @Disabled 的方式
1. 禁用单个测试方法
在 @Test 方法上直接添加 @Disabled:
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
@Test
@Disabled("乘法功能尚未实现,待后续开发")
void testMultiply() {
// 这个测试不会执行
assertEquals(6, calculator.multiply(2, 3));
}
⚠️ 注意:
@Disabled必须放在@Test下方(Jupiter 允许注解顺序灵活,但建议@Test在前,语义更自然);它不能替代@Test,二者需共存。
2. 禁用整个测试类
加在类名上方即可,所有 @Test 方法均被跳过:
@Disabled("整套支付模块测试暂未就绪")
class PaymentServiceTest {
@Test void testPay() { /* ... */ }
@Test void testRefund() { /* ... */ }
}
3. 原因是可选的,但强烈建议填写
不带原因也可用:
@Disabled // 合法,但不利于协作
@Test void testLegacyFeature() { ... }
但团队协作中,必须写明原因(如功能未完成、环境依赖缺失、临时绕过 flaky 测试等),便于他人理解上下文。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
❌ 常见错误与注意事项
-
@Disabled只在 JUnit 5(Jupiter)中有效,JUnit 4 不识别它(要用@Ignore); - 不能用在
@BeforeEach、@AfterEach等生命周期方法上(Jupiter 不支持); - 被
@Disabled的测试仍会被发现和报告,只是状态为SKIPPED,IDE 和 Maven Surefire 插件都会明确标出; - 它不阻止编译,也不影响其他测试运行 —— 是安全、透明的临时屏蔽手段。
? 补充:如何确认它生效?
在 IntelliJ IDEA 或 Eclipse 中运行测试类,
@Disabled方法会在测试视图中标为灰色 / 显示 “skipped”;-
Maven 命令行执行:
mvn test
控制台会输出类似:
Skipped: testMultiply(com.example.CalculatorTest)
Surefire 报告 HTML 中也会单独列出 disabled tests。
不复杂但容易忽略:只要项目用的是 JUnit 5(org.junit.jupiter),就优先用 @Disabled 替代旧版 @Ignore,语义准确、团队可读性高。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










