@DisabledIfSystemProperty()无法处理afterEach或afterAll钩子

问题描述 投票:0回答:1

也许我误解了可以使用条件注释的位置,但我试图只在传入系统属性时运行afterEach钩子或afterAll钩子。

例如:

mvn test -DrunTearDownScript=false

并为我的afterEach钩子:

@AfterAll
@DisabledIfSystemProperty(named = "runTearDownScript", matches = "false")
void clearDownTestEnvironment() {
    System.out.println(System.getProperty("runTearDownScript"));
}

在上面的例子中,我希望不打印println,但它是“假的”。

我想我可以在钩子里面编写自己的条件,但理想情况下注释的使用看起来更清晰。

任何帮助将非常感激。谢谢。

conditional junit5
1个回答
1
投票

也许我误解了可以使用条件注释的地方......

是。它们只能用于“容器或(a)测试(方法)”。

复制自https://junit.org/junit5/docs/current/user-guide/#writing-tests-conditional-execution

JUnit Jupiter中的ExecutionCondition扩展API允许开发人员以编程方式基于某些条件启用或禁用容器或测试。

[...]

以下部分中列出的每个条件注释只能在给定的测试接口,测试类或测试方法上声明一次。

[...]

2.7.3系统属性条件

可以通过@EnabledIfSystemProperty和@DisabledIfSystemProperty注释,根据命名的JVM系统属性的值启用或禁用容器或测试。通过matches属性提供的值将被解释为正则表达式。

© www.soinside.com 2019 - 2024. All rights reserved.