如何在JUnit5中管理失败的测试

时间:2018-07-17 16:08:45

标签: webdriver screenshot junit5

我正在迁移到JUnit5,我想知道JUnit5中是否有一种简单的方法来知道测试何时失败或失败,就像我们在JUnit4中使用TestWatcher一样。

我做了一些研究,发现了类似但悬而未决的问题,例如: https://github.com/junit-team/junit5/issues/542 由于它们中的大多数都已经很老了,我只是想问一下是否有最新的解决方案。

该想法是能够进行屏幕截图或将一些消息添加到我的日志中。因此,是否存在侦听器或扩展程序,或可以使我快速管理webdriver测试失败/通过/跳过的某些内容? 提前致谢!

1 个答案:

答案 0 :(得分:1)

好的,谢谢。 这比我预期的要难,但是终于做到了。正如您所指出的,我们需要创建一个实现WatcherExtensionBeforeTestExecutionCallback的外部类(例如AfterTestExecutionCallback),然后使用扩展名给出的上下文评估异常 >。 在此类中,我们可以添加如下内容:

@Override
public void afterTestExecution(ExtensionContext extensionContext) throws Exception {
    Method testMethod = extensionContext.getRequiredTestMethod();
    Boolean testFailed = extensionContext.getExecutionException().isPresent();
    if (testFailed) {
        if (!TESTDATA.excluded.contains(testMethod.getName())) {
            takeScreenshot(testMethod);
            logErrorMessage("Test " + testMethod.getName() + " failed on " + getAppVersion() + " using " + TESTDATA.browser);
        } else {
            logInfoMessage("Test " + testMethod.getName() + " was skipped on " + getAppVersion() + " using " + TESTDATA.browser);
        }
    } else {
        logInfoMessage(testMethod.getName() + " was successfully executed on " + getAppVersion() + " using " + TESTDATA.browser);
    }

最后,您需要将此注释添加到测试类中:

@ExtendWith(WatcherExtension.class)
public class MyTest extends TestFactory {
    @Test
    public void testMyTest() { //whatever  }
}

就我个人而言,我认为这是非常基本的东西,应该在以后的版本中由JUnit5直接实现。 谢谢!