如何在 TestNG 中并行运行测试用例?

Posted

技术标签:

【中文标题】如何在 TestNG 中并行运行测试用例?【英文标题】:How to run test cases in parallel in TestNG? 【发布时间】:2018-09-29 12:59:11 【问题描述】:

我有一组要并行运行的 TestNG 测试用例。 我没有使用 TestNG 套件 XML 文件。

根据http://maven.apache.org/surefire/maven-surefire-plugin/examples/testng.html#Running_tests_in_parallel, 我可以在项目POM文件的surefire配置中指定parallel和threadCount参数。

但这不起作用。 测试用例仍在按顺序运行。

我可以在不使用套件 XML 文件的情况下并行运行测试用例吗?

Surefire 插件版本 - 2.21.0 TestNG 版本 - 6.8.21

我在 POM 文件中的surefire配置中使用了以下几行

<parallel>classes</parallel>                     
<useUnlimitedThreads>true</useUnlimitedThreads>

【问题讨论】:

这将有助于使用最新版本 6.14.3 运行您的 TestNG 测试以排除兼容性问题。您使用的那个已经超过 3 年了。此外,为您运行的测试类型选择正确的插件会有所帮助。因此,如果您正在执行集成测试,maven-failsafe-plugin 将是一个更好的选择。粘贴 pom.xml 的相关部分可能会为其他人提供更多见解以帮助您。 【参考方案1】:

是的,您可以使用 maven-surefire-plugin 并行运行测试 methods / classes(即不使用套件 xml)。

如果您想并行运行测试方法,请使用以下配置。

<configuration>
    <parallel>methods</parallel>
    <threadCount>10</threadCount>
</configuration>

如果您想并行运行测试,请使用以下配置。

<configuration>
    <parallel>classes</parallel>
    <threadCount>10</threadCount>
</configuration>

运行 Maven 命令:-

mvn clean test

检查测试方法是否在不同线程中运行并同时启动:-

请在下面添加sysout 以观察行为。您可以稍后注释掉或删除sysout。这只是为了理解行为。

System.out.println("thread id:" + Thread.currentThread().getId() + "Timestamp :" + LocalDateTime.now());

你可以克隆这个repo并运行上面的maven命令来检查结果。

【讨论】:

以上是关于如何在 TestNG 中并行运行测试用例?的主要内容,如果未能解决你的问题,请参考以下文章

TestNG测试用例重跑详解及实践优化

在套件中运行测试用例时在 XML testng 文件中出现错误

利用 TestNG 并行执行用例

如何在TestNG报告中显示消息(对于通过的测试用例)

如何在机器人框架中并行运行多个测试套件上的多个测试用例 | Python

如何并行运行测试用例?