当前位置: 首页 > 知识库问答 >
问题:

如何在JUnit5中管理失败测试

司马宏茂
2023-03-14

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

我做了一些研究,发现了一些类似的问题,但仍未解决,比如这样一个问题:https://github.com/junit-team/junit5/issues/542因为大多数问题都很老,所以我想问一下,以防最近有一个解决方案。

想法是能够做一个屏幕截图或添加一些消息到我的日志。那么,是否有一个监听器或扩展或其他东西可以快速地允许我管理webdriver测试的失败/通过/跳过?提前道谢!

共有1个答案

锺功
2023-03-14

好的,谢谢。比我预想的要难,但最终还是成功了。正如您所指出的,我们需要创建一个实现BeforeTestExecutionCallbackAfterTestExecutionCallback的外部类(例如WatcherExtension),然后使用扩展给出的上下文计算异常。在这个类中,我们可以添加如下内容:

@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直接实现。谢谢!

 类似资料:
  • 我在使用JUnit5进行maven测试时遇到了一个奇怪的问题。 我用junit工具为每个方法创建了测试套件,每个测试都是这样开始的。 和要测试的类

  • 我有一个Selenium Python测试来检查一个网站是否有效工作。 当页面加载时,开始和结束日期将以这种格式显示,并且按钮将变灰,直到设置正确的日期格式(如屏幕截图所示) 我的硒代码:

  • 我使用的是JUnit5Vintage,所以我的测试任务同时运行JUnit4和JUnit5测试。

  • 在我的基于gradle和kotlin的项目中,我有一些子模块。it模块的生成配置(Build.gradle.kts): 我尝试在这个模块中运行一些简单测试 当我试图运行测试时,我得到错误: 但是,如果从我的构建配置中删除id(“io.spring.dependency-management”)版本“1.0.7.release”,并将使用类似这样的Spring Boot版本(“org.springf

  • 上下文:我想编译和测试一个多模块项目中的所有模块,但如果任何一个失败,编译或测试,我希望整个构建失败。 默认配置要么在第一次失败时停止,要么在测试失败后跳过模块 跑步: 在第一个失败的模块处停止。 如果添加: mvn clean Install-FAE//结束时失败 null 响应非常感谢-否则,如果有多个问题,我们必须在构建服务器上重复运行测试-消耗大量时间。

  • 问题内容: 我写了JUnit5扩展。但是我找不到方法如何获得测试结果。 扩展看起来像这样: 有什么提示如何获得测试结果? 问题答案: 正如其他答案所指出的那样,JUnit会将失​​败的测试与异常进行通信,因此可以使用来了解发生的情况。请注意,这很容易出错,因为以后运行的扩展程序仍可能无法通过测试。 另一种方法是注册自定义TestExecutionListener。不过,这两种方法都有点round回