java - 如何在单线程旁边运行多线程 testng

标签 java multithreading testng single-threaded

我正在使用 testng 运行一系列测试,并在 parallel="classes" 级别运行它们。问题是我希望 3-4 个类始终在同一线程(单线程)上一起运行。所有其他类都可以在任何线程上运行,我不在乎。 有办法做到这一点吗?

Example: A B and C need to be ran one-at-a-time. All other classes will be denoted by numbers. 
 Threads running at one time:    
    A 3 7 2 - A would run while 3 other classes run
    C 8 4 1 - B would run once A is done, (other threads dont matter)
    B 5 9 6 - C would run once B is done.

有关更多信息,我有 3-4 个类,由于它们的作用而无法并行运行,我基本上只想一次运行一个,并且希望保证这些类中只有一个是永远运行的立即运行。我的所有其他类(class)都可以在任何给定时间以任何顺序运行,没有任何问题。

我知道我可以设置与组级别平行,但随后我必须向所有其他类添加随机无意义的组​​,以便它们同时运行。也许有一种方法可以使一组线程单线程而另一组线程并行?

我目前正在运行 4 个线程,并且有大约 50 个类。

有什么想法吗?

-- 根据评论添加了要求/想法 --

我尝试这样做的主要原因是我正在测试服务器 API。有些调用在服务器端需要很长时间,因此当我等待响应时,我也可能会发送一些其他调用,因此需要多线程。我将所有测试转换为在多线程中运行,以便节省整个测试套件的大量时间。它工作得很好,但是这四个类不能同时抛出到服务器,否则会导致测试失败。 注意:我知道一种方法是“修复这些类,以便它们可以并行工作”,我已经尝试过,并且如果可能的话将继续这样做,但这是一个不同的更长的故事,现在让我们假设这不是有可能。

因此,实际上一切都与时间有关。本质上,解决方案将通过 hibernate 我不感兴趣的所有其他线程来运行单线程,因为这会破坏整个目的。

最佳答案

您可以将它们全部绑定(bind)到同一个CPU。这意味着它们当时无法运行。

问题是仅仅让一个计时器运行是远远不够的。相反,您应该在这些线程之间使用锁定,以便它们可以在已知点并以您可以推理的方式移交执行。

关于java - 如何在单线程旁边运行多线程 testng,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17954634/

相关文章:

java - 我已将 Maven 项目从 Github 导入到 eclipse,pom.xml 依赖项显示为红色下划线

java - 区分大小写的文件扩展名和存在检查

java - TimerTask 生成错误而不执行

java - 完成所有指令后跳过Selenium webdriver测试,并报错java.lang.NullPointerException,我该如何解决?

c++ - ExitThread 与允许线程函数正常退出 - C++

multithreading - 使用 OMP 循环展开

java - 如何使用 java 中的 TestNG 将字符串从主类传递到另一个类?

java - 存储 Java 对象以供在使用 REST 的 Web 应用程序中进一步使用

java - 强化扫描仪输出

java - 将labview vi导入java