行业资讯 2025年08月6日
0 收藏 0 点赞 572 浏览 2347 个字
摘要 :

文章目录 1.@EnabledOnOs和@DisabledOnOs 2.@EnabledOnJre和@DisabledOnJre 3.@EabledForJreRange和@DisabledForJreRange 4.@EnabledIf和@DisabledIf 5.@EnabledIfEnvir……




  • 1.@EnabledOnOs和@DisabledOnOs
  • 2.@EnabledOnJre和@DisabledOnJre
  • 3.@EabledForJreRange和@DisabledForJreRange
  • 4.@EnabledIf和@DisabledIf
  • 5.@EnabledIfEnvironmentVariable和@DisabledIfEnvironmentVariable
  • 6.@EnabledIfSystemProperty和@DisabledIfSystemProperty

学会使用JUnit 5中内置的条件执行注解来启用或禁用特定测试的执行。

我们可以使用内置的条件注解来配置测试在何时运行和何时不运行,这些注解如下:

1.@EnabledOnOs和@DisabledOnOs

  • 这些注解根据特定的操作系统启用或禁用已注解的测试。
  • 支持的操作系统列在org.junit.jupiter.api.condition.OS枚举中,包括AIX、Linux、Mac、Solaris、Windows和其他。
  • 当应用于类级别时,该类中的所有测试方法都将在相同的指定操作系统上启用。
  • 如果通过此注解禁用了测试方法,则将启动测试类,但仅测试方法和其生命周期方法将不会被执行。
@Test
@EnabledOnOs(OS.MAC)
void testOnMacOs() {
    assertTrue(true);
}
@Test
@DisabledOnOs(OS.WINDOWS)
void doNotTestOnWindows() {
    assertTrue(true);
}

2.@EnabledOnJre和@DisabledOnJre

  • 这些注解可以帮助为特定的JRE版本启用或禁用测试。
  • 支持的值可以在最新版本的JRE枚举中找到。
  • 如果无法检测到当前的JRE版本,则不考虑在JRE枚举中定义的任何常量。
@Test
@DisabledOnJre(JRE.JAVA_8)
void disabledOnJava8() {
    assertTrue(true);
}
@Test
@EnabledOnJre({ JRE.JAVA_17, JRE.JAVA_18 })
void enabledOnJava17Or18() {
    assertTrue(true);
}

3.@EabledForJreRange和@DisabledForJreRange

  • 这些注解用于指示注解的测试类或测试方法仅针对使用其最小到最大属性的一定范围的JRE版本禁用或启用。
  • 当应用于类级别时,该类中的所有测试方法都将在相同的指定JRE版本上启用。
@Test
@DisabledForJreRange(min = JRE.JAVA_8, max = JRE.JAVA_11)
void notFromJava8to11() {
    assertTrue(true);
}
@Test
@EnabledForJreRange(min = JRE.JAVA_12, max = JRE.JAVA_18)
void fromJava12to18() {
    assertTrue(true);
}

4.@EnabledIf和@DisabledIf

  • 只有当提供条件评估为true时,已注解的测试类或测试方法才会被启用或禁用。
  • 当应用于类级别时,该类中的所有测试方法都将根据相同条件启用或禁用
  • 。当这些注解应用于类级别时,条件方法必须始终是静态的。
  • 此注解不能重复,因此只能声明一次。
@Test
@EnabledIf(\"customConditionalFunction\")
void enabled() {
    assertTrue(true);
}
@Test
@DisabledIf(\"customConditionalFunction\")
void disabled() {
    assertTrue(true);
}
boolean customConditionalFunction() {
    return true;
}

5.@EnabledIfEnvironmentVariable和@DisabledIfEnvironmentVariable

  • 如果我们想要根据环境变量的值是否匹配特定正则表达式来启用或禁用测试,可以使用这些注解。
  • 当在类级别声明时,结果将适用于该类中的所有测试方法。
  • 如果指定的环境变量未定义,该注解的存在将没有任何影响。
  • 这是一个可重复的注解,因此可以在测试方法或类上多次使用。
@Test
@EnabledIfEnvironmentVariable(named = \"ENV\", matches = \".*development.*\")
public void executeOnlyInDevEnvironment() {
    return true;
}
@Test
@DisabledIfEnvironmentVariable(named = \"ENV\", matches = \".*prod.*\")
public void disabledOnProdEnvironment() {
    return true;
}

6.@EnabledIfSystemProperty和@DisabledIfSystemProperty

  • 如果我们想要根据特定JVM系统属性的值是否匹配特定正则表达式来启用或禁用测试,可以使用这些注解。
  • 当在类级别声明时,结果将适用于该类中的所有测试方法。
  • 如果指定的系统属性未定义,该注解的存在将没有任何影响。
  • 这也是一个可重复的注解,因此可以在测试方法或类上多次使用。
@Test
@EnabledIfSystemProperty(named = \"any.system.property\", matches = \"value-regex*\")
public void onlyIfPropertyValueIsFound() {
    return true;
}

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/9510.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

986
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

463
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

347
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

455
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

515
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

831
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号