也许我误解了可以使用条件注释的位置,但我试图只在传入系统属性时运行afterEach钩子或afterAll钩子。
例如:
mvn test -DrunTearDownScript=false
并为我的afterEach钩子:
@AfterAll
@DisabledIfSystemProperty(named = "runTearDownScript", matches = "false")
void clearDownTestEnvironment() {
System.out.println(System.getProperty("runTearDownScript"));
}
在上面的例子中,我希望不打印println
,但它是“假的”。
我想我可以在钩子里面编写自己的条件,但理想情况下注释的使用看起来更清晰。
任何帮助将非常感激。谢谢。
也许我误解了可以使用条件注释的地方......
是。它们只能用于“容器或(a)测试(方法)”。
复制自https://junit.org/junit5/docs/current/user-guide/#writing-tests-conditional-execution
JUnit Jupiter中的ExecutionCondition扩展API允许开发人员以编程方式基于某些条件启用或禁用容器或测试。
[...]
以下部分中列出的每个条件注释只能在给定的测试接口,测试类或测试方法上声明一次。
[...]
2.7.3系统属性条件
可以通过@EnabledIfSystemProperty和@DisabledIfSystemProperty注释,根据命名的JVM系统属性的值启用或禁用容器或测试。通过matches属性提供的值将被解释为正则表达式。