我正在尝试管理testNG中的并行执行组 .

我想并行运行6个@Tests . 这些测试属于不同的类,这些测试是测试组的一部分,测试组具有@beforeGroup方法 .

我的套房很复杂 . 在后台放置了各种java任务,这些任务在整个测试组的持续时间内运行 . @beforeGroup方法有一个getRunTime,它有一个RunTime.exec进程 . 其中一些过程是临时和完整的,其中一些过程在testNG组的整个过程中都会长期运行 .

最重要的是,我只想并行运行6个测试 . 它们是UI测试,依赖于可以同时处理6个并行Selenium测试的docker容器 .

为方便起见,我的套件文件设置为parallel = tests

我在suite.xml中有6个不同的条目:

<test name="parallel execution group 1">
    <classes>
        ...
    </classes>
</test>

......但我遇到了问题 . 为简化起见,我们只是说如果所有类中的所有测试都分布在6个testNG套件文件中并行执行组在同一个testNG组中(即groups =“group1”),则该组的@beforeGroup方法运行6次(应该只运行一次) .

为了解决这个问题,我担心我的套件定义中的线程数太高了 - 设置为50.我设置它任意高,因为值为6可以确保没有测试并行运行 . 它们的值为50 . 这告诉我,类中有一些@beforeGroups(其他测试类扩展为java类......)的后台任务正在消耗这些线程 .

那么......线程如何在testNG中真正起作用?我希望它只是定义testNG本身试图管理的并行事物,无论这些单独的事情是否恰好产生了自己的线程 . 但它似乎并非如此 . 不确定我需要指定多少个线程才能获得我真正想要的结果 .