JUnit禁用启用测试
JUnit 5 Jupiter API提供了多种禁用或者启用测试的方法。
有各种注释可以帮助我们轻松地基于OS,JRE,系统属性等禁用/启用测试。
我们还可以执行脚本来启用或者禁用测试。
让我们看一下启用和禁用测试的各种JUnit批注。
JUnit禁用测试方法和类
JUnit@ Disabled
注释是禁用测试的最简单方法。
它既可以应用于测试方法,也可以应用于类本身。
如果将@Disabled注解应用于该类,则该类中存在的所有测试都将被禁用。
我们还可以指定原因消息以用于记录。
@Test @Disabled void test() { assertTrue(3 > 0); }
@Disabled("Explicitly Disabled") class DisabledTests { //all tests disabled }
基于条件的JUnit禁用/启用测试
JUnit Jupiter API在org.junit.jupiter.api.condition
包中提供了有用的注释,以根据指定条件启用或者禁用测试。
这些注释可以应用于测试方法以及类本身。
让我们一一看一下。
@DisabledOnOs和@EnabledOnOs
我们可以使用这些注释基于操作系统禁用或者启用测试。
在内部,这些注释使用系统属性" os.name"来查找操作系统信息。
@Test @DisabledOnOs(value= {OS.MAC, OS.WINDOWS}) void test2() { assertFalse(3 < 0); } @Test @EnabledOnOs(value= {OS.MAC}) void test3() { assertTrue(System.getProperty("os.name").startsWith("Mac")); }
@DisabledOnJre和@EnabledOnJre
我们可以使用这些注释基于JRE版本禁用/启用测试。
在内部,这些注释使用系统属性" java.version"来查找操作系统信息。
@Test @DisabledOnJre(value= JRE.JAVA_10) void test4() { assertFalse(3 < 0); } @Test @EnabledOnJre(value= JRE.JAVA_10) void test5() { assertTrue(System.getProperty("java.version").startsWith("10")); }
@DisabledIfEnvironmentVariable和@EnabledIfEnvironmentVariable
我们可以将这些注释与系统环境属性一起使用。
我们需要指定系统属性名称和正则表达式以使其匹配。
这些方法使用System.getenv(string name)
获取系统属性并与指定的正则表达式匹配。
@Test @DisabledIfEnvironmentVariable(named="USER", matches="hyman") void test6() { assertFalse(3 < 0); } @Test @EnabledIfEnvironmentVariable(named="USER", matches="hyman") void test7() { assertTrue("hyman".equals(System.getenv("USER"))); }
@DisabledIfSystemProperty和@EnabledIfSystemProperty
与环境变量类似,这些方法使用系统属性和指定的正则表达式来禁用或者启用测试。
@Test //My System Properties "os.name" value is "Mac OS X" @DisabledIfSystemProperty(named="os.name", matches="Mac.*") void test8() { assertFalse(3 < 0); } @Test //My System Properties "user.name" value is "hyman" @EnabledIfSystemProperty(named="user.name", matches="hyman") void test9() { assertTrue("hyman".equals(System.getProperty("user.name"))); }
@DisabledIf和@EnabledIf
这些批注用于执行脚本,以确定将禁用还是启用测试。
默认脚本引擎是Oracle Nashorn。
但是,引擎属性可用于覆盖默认脚本引擎名称。
访问器通过简单的String get(String name)方法提供对类似于地图的结构的访问。
以下属性访问器在脚本中自动可用。
- systemEnvironment:操作系统环境变量访问器
- systemProperty:JVM系统属性访问器
让我们看看如何使用这些批注来启用和禁用测试。
@Test @DisabledIf("'hyman' == systemEnvironment.get('USER')") void test10() { assertFalse(3 < 0); } @Test @EnabledIf("'hyman' == systemProperty.get('user.name')") void test11() { assertTrue("hyman".equals(System.getProperty("user.name"))); }
JUnit禁用测试执行
当您使用禁用的方法执行测试类时,将产生以下视图。
请注意,JUnit会跳过禁用的测试方法。
如果您将禁用整个测试类,则报告将显示跳过该类中的所有测试方法。