有没有办法停止排队的JUnit测试并仍然保持JavaFX Gui运行?

时间:2015-06-08 20:21:38

标签: java multithreading selenium junit webdriver

我正在编写一个程序来设置一个GUI来启动在Java中使用Selenium WebDriver的JUnit测试脚本。 GUI在后台设置了一个JUnit测试队列(或者我相信)。在GUI上,我想利用"停止测试"按钮,将停止仍在队列中的所有未来JUnit测试执行,但我想及时做到这一点。我目前有代码可以停止所有测试,但是如果队列中有190个测试,那么当你考虑到许多测试时,停止执行队列中的单个测试需要花费1-2秒来执行,这对于不及时和消费者友好:

Field field = JUnitCore.class.getDeclaredField("fNotifier");
field.setAccessible(true);
RunNotifier runNotifier = (RunNotifier) field.get(runner);
runNotifier.pleaseStop();

有没有办法清除JUnit测试的队列或要关闭的特定线程,这将停止执行脚本而不会杀死GUI?

2 个答案:

答案 0 :(得分:3)

您如何在xml文件中定义线程?使用并行变量找到一些东西立即杀死所有特定线程。也许如果你用一些常见的东西命名你的线程并增加一个计数器来放置一个" _1" ......" _2"在公共名称的末尾,你可以快速循环并直接杀死线程?你提到了一个测试队列,你对它的工作原理并不感兴趣,也许你可以手动将队列放到自己的手中并将它们全部杀掉。

答案 1 :(得分:0)

在最近重新访问之后,我发现我的问题中的运行通知程序工作得足够快,我只是有太多的子进程,我最近在停止测试操作期间进行了优化。现在运行通知程序允许排队测试实现它们几乎不能立即运行。

虽然这在技术上没有回答如何停止排队的JUnit测试而不至少尝试启动它们的问题。