如何拦截用@Disabled注释的JUnit5方法?

时间:2018-03-29 14:03:29

标签: junit5

我想编写一个JUnit5扩展,我必须在找到使用@Disabled注释的测试方法时采取一些操作。不幸的是,没有为此类方法调用beforeTestExecution()。有没有人知道如何拦截这种@Disabled测试方法?

谢谢!

2 个答案:

答案 0 :(得分:5)

正如sqlite3_finalize()中所述,您可以通过将ExecutionCondition设置为@Disabled来停用默认处理junit.jupiter.conditions.deactivate的内置org.junit.*DisabledCondition(请参阅{ {3}}关于如何设置它)。这将导致您的测试被执行。

接下来,您需要实施自己的ExecutionCondition扩展程序,检查@Disabled,采取行动并返回ConditionEvaluationResult.disabled("...")

为了避免在每个测试课程中注册您的扩展程序,您可以激活User Guide并在全球范围内注册您的扩展程序。

根据您希望实现的目标,可能更容易注册您自己的TestExecutionListener(请参阅Configuration Parameters)并实施executionSkipped()

答案 1 :(得分:0)

此处使用的扩展点为https://github.com/junit-team/junit5/blob/master/junit-jupiter-api/src/main/java/org/junit/jupiter/api/extension/ExecutionCondition.java

可能有趣的是找出几个实现者如何组成,即如果第二个将被调用,在什么情况下。您可能不得不深入研究Jupiter代码或进行一些实验。