【问题标题】:Selenium with TestNG and Gradle: Setting browser crash tests as SKIPPED instead of FAILEDSelenium 与 TestNG 和 Gradle:将浏览器崩溃测试设置为 SKIPPED 而不是 FAILED
【发布时间】:2013-12-06 20:27:34
【问题描述】:

我目前正在使用 Selenium 处理最新版本的 Chrome 和 ChromeDriver 的常见问题。我正在使用 Grid 2 和几台 Windows 7 机器运行我的测试。我会得到 ChromeDriver 报告的偶尔不可避免的死浏览器选项卡。由于这些测试在 Web 应用程序功能方面并没有真正失败,我想将它们标记为已跳过,以便继续报告对我当前目的更有用的信息。我尝试让它们重新运行,但 TestNG 对此的支持是实验性的,目前已被破坏。

有没有办法可以在这些测试登录到我的 Gradle 报告之前将它们设置为 SKIPPED 状态? (我使用 Gradle 而不是 ReportNG 进行报告,因为 ReportNG 在并行测试中无法正常工作)。

我想我需要添加另一个侦听器并以某种方式获取报告的堆栈跟踪,检查特定字符串,然后将集合设置为 SKIPPED。这是正确的方法吗?

任何有关如何完成此任务的提示都会很棒。我还没有找到一种方法来用我的监听器捕获堆栈跟踪,最重要的是,将测试设置为 SKIPPED 状态(一旦跟踪被解析)。我正在使用 Java 来驱动这些测试。

任何想法/帮助将不胜感激!

干杯, 达尔文

【问题讨论】:

    标签: java selenium gradle testng selenium-chromedriver


    【解决方案1】:

    您可以尝试实现接口ITestListener,在onTestFailure() 中检查堆栈跟踪并调用setCurrentTestResult() 方法设置Skipped 状态。

    不要忘记按照 TestNG 文档的“5.17 - TestNG 侦听器”中所述将实现的类设为侦听器。

    【讨论】:

    • 太好了,这与我现在正在发生的事情差不多,尽管我很难弄清楚如何实际获取堆栈跟踪。有没有办法捕获它以便可以轻松解析?
    • @darwin-allen 尝试类似: String stackTraceString = Throwables.getStackTraceAsString(getCurrentTestResult().getThrowable());
    • 太好了,与我尝试的实现相比,这给了我更多的工作机会。我想我可以从这里拿走它。非常感谢:)。
    猜你喜欢
    • 2014-01-01
    • 1970-01-01
    • 2019-09-20
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    相关资源
    最近更新 更多