如何在 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 中并行运行测试用例?的主要内容,如果未能解决你的问题,请参考以下文章
在套件中运行测试用例时在 XML testng 文件中出现错误