我对TestNG很陌生,来自cucumber背景。在我当前的项目中,jenkins作业使用Maven和TestNG配置,脚本使用java和Selenium。
任何工作,比如说30次测试,如果需要2小时才能完成,当在最后一分钟由于某种原因突然终止时,我不会得到任何成功运行的测试的结果。因此被迫再次运行整个工作。我只看到错误堆栈跟踪和结果为:
Results :Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
我相信有更好的设计方法,希望有更好的方法。
如何确保我不会丢失成功运行的测试结果(尽管通过/失败)?
通常有两种方法可以将报告构建到TestNG驱动的测试中。
org的侦听器。testng。IReporter
接口已构建,在其generateReport()
中,执行将测试结果合并到报告中的所有逻辑
org来实现。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并行运行一个示例测试项目。但它是在一个线程中顺序执行的。我漏掉什么了吗? 谢了。
这是驱动程序类,它将为每个测试方法创建驱动程序实例。