我已经为我的基于 Windows 的应用程序编写了测试 TestNG 。有时我的测试会导致 Windows BSOD,因此测试将等待 Windows 启动直到超时并失败。
我写了一个Listener用于 BSOD 检测和处理,以便每当测试开始时 BSOD 检测器都会作为监听器启动,并在发生 BSOD 时进行处理。但我仍然无法通知我的测试必须停止。它仍然继续执行直到超时。
如何解决这个问题?有没有办法通知测试从监听器终止它?
最佳答案
我想你可能不走运。
https://groups.google.com/forum/#!topic/testng-users/BkIQeI0l0lc 的讨论清楚地表明,截至 2012 年 8 月,无法停止正在运行的测试套件。
结合 2010 年 2 月的一篇更旧的帖子 ( https://groups.google.com/forum/#!topic/testng-users/FhC3rqs1yDM ) 表明,它长期以来一直是 TestNG 的一个缺点。
当前的 TestNG 文档没有描述任何停止该套件的方法。
从我在 https://github.com/cbeust/testng/blob/master/src/main/java/org/testng/TestNG.java 的源代码中可以看到(尽管我没有追踪所有路径) ,它只是为每个测试创建新任务并运行它们,无法提前中断。
也许您可以修改您的测试以访问某些标志,该标志指示是否应跳过后续测试(例如由 BSOD 检测器触发)。如果设置了此标志,则所有后续测试都负责将自己指示为已跳过。这可能并不理想,但一种思考方式是:如果在测试之前检测到 BSOD(或其他终端事件),则应跳过任何测试。
您可以在 TestNG Google 群组(上面有链接)上请求此功能。如果您愿意,您也许还可以自定义 TestNG 源。
关于java - 如何在 TestNG 中发出停止测试信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20063929/