我在TestNG为我的基于Windows的应用程序编写了测试。有时我的测试会导致Windows的BSOD,因此测试将等待Windows一直运行直到超时并失败。
我为BSOD检测和处理编写了Listener,因此无论何时测试开始,BSOD检测器都将作为监听器启动并在BSOD发生时进行处理。但我仍无法通知我的测试它必须停止。它仍然会继续执行直到超时。
怎样才能解决这个问题?有没有办法通知测试从Listener终止它?
答案 0 :(得分:3)
我想你可能运气不好。
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源。