gpt4 book ai didi

java - testng并行测试-避免类分组

转载 作者:行者123 更新时间:2023-12-03 13:08:43 25 4
gpt4 key购买 nike

我正在尝试使用testng并行运行测试,但是我的配置存在一些问题。

我有一个包含许多类文件的项目,每个文件包含许多测试。

我目前正在使用parallel ='methods'标志运行测试,以最大化在给定时间运行的测试数量。

我的目标是避免同时运行相同类别的测试,同时最大化并行测试的数量。

因此,给出了一个示例xml文件:

<suite>
<test parallel='methods' thread-count=40>
<classes>
<class>Class1</class>
<class>Class2</class>
</classes>
</test>
</suite>

给定40个可用线程,我希望在任何给定时间运行40个测试。

我使用了一种方法拦截器来随机化测试顺序,并且使用eclipse调试器,我知道它可以正常工作,并且在每个类中都可以控制顺序。

我的目标是这样的执行:
<Test from class1>
<Test from class2>
<Test from class1>
<Test from class2>

但是,每个类依次并行运行各自的测试,如下所示:
<Test from class1>
<Test from class1>
<Test from class2>
<Test from class2>

仅当Class1不再有任何要执行的测试时,Class2才开始执行。

我试过parallel ='classes',但这给每个类1个线程。

是否可以强制执行随机顺序并维持正在运行的并行测试的数量?

我想传递一个随机方法列表,并将执行排队,以大致遵循该顺序。

我尝试将这些类分解为单独的套件和测试,但是这不能满足40个并行运行测试的目标,因为每个类中的测试方法数量不同,并且每个测试方法的运行时间未知。

我的另一种想法是使用多重继承来组合类,将每个类的测试方法组合到1个类中,但是java不支持多重继承,因此无法使用。

感谢您阅读本文或提供建议或帮助的任何人。

编辑:解决可能的重复项:

在另一个问题中提出的解决方案将允许我与多个线程并行运行类,但是如果测试在其他线程之前完成,则看起来将不会使用为其分配的线程。

我有2个以上的要并行化的类,如果我开始为每个测试提供线程,我认为我可能会遇到问题-10个类将限制为每个线程4个(并行总共40个)。我可能会因等待1个测试而无法完成一次运行4个方法(其中36个处于空闲状态)而陷入困境,这可能抵消了实现此解决方案的任何好处。

理想的解决方案将具有用于测试的通用线程池,例如使用基本的单测试/并行=“方法”方法。

最佳答案

您可以尝试在thread-count="40"属性附近添加parallel="methods"吗?如果没有,请给您的类(class)提供包名称。

关于java - testng并行测试-避免类分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46855325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com