JUnit禁用启用测试

时间:2020-02-23 14:35:23  来源:igfitidea点击:

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会跳过禁用的测试方法。
如果您将禁用整个测试类,则报告将显示跳过该类中的所有测试方法。