我正在迁移到JUnit5,我想知道JUnit5中是否有一种简单的方法来知道测试何时失败或失败,就像我们在JUnit4中使用TestWatcher一样。
我做了一些研究,发现了类似但悬而未决的问题,例如: https://github.com/junit-team/junit5/issues/542 由于它们中的大多数都已经很老了,我只是想问一下是否有最新的解决方案。
该想法是能够进行屏幕截图或将一些消息添加到我的日志中。因此,是否存在侦听器或扩展程序,或可以使我快速管理webdriver测试失败/通过/跳过的某些内容? 提前致谢!
答案 0 :(得分:1)
好的,谢谢。
这比我预期的要难,但是终于做到了。正如您所指出的,我们需要创建一个实现WatcherExtension
和BeforeTestExecutionCallback
的外部类(例如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直接实现。 谢谢!