java - 以编程方式停止 TestNG 运行
问题描述
我开发了一些 GUI,用户可以在其中启动和停止 TestNG 测试。
我是否可以在不创建条件检查的情况下停止 TestNG 进程,@AfterMethod
因为某些测试非常长(超过 15 分钟),因此@AfterMethod
解决方案无效。没有要求优雅地停止测试。
最新的 TestNG 版本(>7.0)有解决方案吗?例如,在IExecutorFactory
or的帮助下ITestRunnerFactory
?
参考:
解决方案
由于您依赖 GUI 来启动和停止测试,因此我假设存在start
和stop
方法。
在该start
方法中,您创建一个ExecutorService它将以编程方式执行测试,并且在该stop
方法中您可以关闭此执行器。
另外,请注意,建议您执行一些机制来共享ExecutorService
betweenstart
和stop
。否则,如果允许通过 GUI 进行多次测试运行(连续启动操作),则会导致麻烦。
public class MyClass {
private ExecutorService ex;
public static void testRunner() {
TestNG t = new TestNG();
t.setTestClasses(new Class[] {YourTestClass.class});
t.run();
}
public void start(){
ex = Executors.newFixedThreadPool(1);
ex.execute(MyClass::testRunner);
}
public void stop(){
ex.shutdownNow();
}
}
推荐阅读
- javascript - SweetAlert 模式窗口中的 Google reCaptcha
- mongodb - 无法在树莓派上安装 mongo 3.6
- ios - 故事板 - 对象内的对象作为 IBOutlet
- django - Python-django.db.migrations.exceptions.NodeNotFoundError
- mstest - MStest 中的 Textcontext 属性给出空引用异常
- javascript - Javascript 数学文本字段
- vba - 在 VBA 中将单元格的值写入另一个 Excel
- java - Android MediaRecorder Fragment 如何保持同一个实例
- angular - `sass` 在 css 中使用大括号时抛出错误
- javascript - 如何将模型对话框定位到中心?