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

即使运行突然终止,我们如何在TestNG中获得成功运行测试的结果?

许彦
2023-03-14

我对TestNG很陌生,来自cucumber背景。在我当前的项目中,jenkins作业使用Maven和TestNG配置,脚本使用java和Selenium。

任何工作,比如说30次测试,如果需要2小时才能完成,当在最后一分钟由于某种原因突然终止时,我不会得到任何成功运行的测试的结果。因此被迫再次运行整个工作。我只看到错误堆栈跟踪和结果为:

Results :Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

我相信有更好的设计方法,希望有更好的方法。

  1. 如何确保没有丢失成功运行的测试结果(尽管通过/失败)
  2. 是测试管理工具还是存储运行时结果的实体,是强制性要求还是TestNG内置了一些规定

共有1个答案

苏丰茂
2023-03-14

如何确保我不会丢失成功运行的测试结果(尽管通过/失败)?

通常有两种方法可以将报告构建到TestNG驱动的测试中。

  • 批处理模式——这通常是生成所有TestNG报告的方式。实现org的侦听器。testng。IReporter接口已构建,在其generateReport()中,执行将测试结果合并到报告中的所有逻辑
  • 实时模式——这通常通过实现TestNG listenerorg来实现。testng。IInvokedMethodListener,然后在其afterInvocation()中执行以下操作:
    • 检查传入的组织的类型。testng。IInvokedMethod(查看它是否是一种配置方法(或@Test方法),并以不同的方式处理这些类型的方法(如果报告需要单独显示它们)。然后测试org的状态。testng。ITestResult并根据状态将其显示为通过/失败/跳过

    在所有的测试都运行之后(这就是为什么我把它们称为批处理模式),IER的实现会在最后运行。因此,如果某些东西在报告阶段执行之前崩溃,您将丢失所有执行数据。

    所以你可能想尝试建立一个实时报告模型。你可以看看SeLion使用的RuntimeReporter报告。它建立在实时模型上。

    是测试管理工具还是存储运行时结果的实体,是强制性要求还是TestNG内置了一些规定?

    TestNG没有提出这样的强制性要求。正如我在上面解释的,这一切归结于你是如何构建你的报告的。如果您以实时方式构建报告(您可以利用Velocity/Freemarker/Thymeleaf等模板引擎)来构建报告模板,然后使用IInvokedMethodListener将值注入模板,以便轻松呈现。

    在这里阅读更多关于模板引擎的比较,这样你就可以选择适合你需要的。

 类似资料:
  • 请让我知道是否可以通过TestNG运行并行套件?

  • 问题内容: 我正在尝试从Jenkins运行TestNG测试(在一个包含的Java项目中),但是没有运气。 似乎Jenkins的TestNG插件(https://wiki.jenkins-ci.org/display/JENKINS/testng- plugin )仅发布TestNG测试的结果,但实际上不运行测试类…或我错了吗? 无论如何,我如何在Jenkins的TestNG项目中实际运行TestN

  • 我试图从Jenkins那里运行TestNG测试(在一个包含Java的项目中),但没有成功。 看起来好像是Jenkins的TestNG插件(https://wiki.jenkins-ci.org/display/JENKINS/testng-plugin)只发布TestNG测试的结果,但不实际运行测试类。。。还是我错了? 在任何情况下,我如何在与Jenkins的TestNG项目中实际运行TestNG

  • 问题内容: 我正在尝试使用testng并行运行自动化测试(Selenium webdriver)。这是我正在运行的节点: 这是我的测试课: } 这是我的xml: 当我运行XML时,我希望我的测试一次在两个线程中的两个浏览器上运行,但是,当我运行XML时,我使两个浏览器实例第一次运行,然后它们分别递增,并且50%测试失败了,您可以看到我正在尝试在每个方法中实例化驱动程序,尽管这不是我的框架如何工作,

  • 我试图用TestNG并行运行一个示例测试项目。但它是在一个线程中顺序执行的。我漏掉什么了吗? 谢了。

  • 这是驱动程序类,它将为每个测试方法创建驱动程序实例。