【问题标题】:Run junit test in parallel with surefire maven plugin与surefire maven插件并行运行junit测试
【发布时间】:2014-04-02 06:33:00
【问题描述】:

是否可以将surefire插件配置为仅并行运行一些测试而依次运行其他测试?

也可以使用surefire forkCount 来运行在 jUnit 套件中声明的并行测试吗?

【问题讨论】:

  • 请问您想要实现什么,因为一个测试不能依赖于其他测试。这意味着测试需要按哪个顺序运行并不重要。
  • 不幸的是,在我的情况下,某些测试在运行时需要排他性。但其余的大部分可以并行运行。

标签: java junit maven-surefire-plugin


【解决方案1】:

您可以将单独的 Maven 配置文件与两个不同的肯定插件配置一起使用。

【讨论】:

  • 所以我可以创建 2 个 JUnit 套件,并且在每个配置文件上我可以指定应该运行什么套件?
  • 是的。您有多种受surefire插件支持的包含/排除机制,可以微调每个配置文件的可运行测试的选择。更多详情,请查看:maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html
【解决方案2】:

一个非常简单的方法如下:

  • 将每个顺序测试移动到 junit 中自己的测试套件中
  • 将所有并行测试移到同一个套件中。
  • 将并行设置为“类”

configuration>
					<includes>
						<include>**/A01TestSuite.java</include>
						<include>**/A02ServiceTestSuite.java</include>
						<include>**/A03FlowTestSuite.java</include>
					</includes>
					<additionalClasspathElements>
						<additionalClasspathElement>${webinf.dir}</additionalClasspathElement>
					</additionalClasspathElements>
					<systemPropertyVariables>
						<log4j.configuration>file:${l4j.test}/log4j.test.properties</log4j.configuration>
					</systemPropertyVariables>
					<forkMode>always</forkMode>
					<argLine>-Xms512m -Xmx512m</argLine>
					<parallel>classes</parallel>
					<threadCount>10</threadCount>

				</configuration>

【讨论】:

    【解决方案3】:

    你可以把这个添加到 pom.xml 文件中的 maven-surefire-plugin 的配置中。

    <configuration>
        <parallel>all</parallel>
        <threadCount>10</threadCount>
        <threadCountSuites>2</threadCountSuites>
        <threadCountClasses>2</threadCountClasses>
        <threadCountMethods>6</threadCountMethods>
        <parallelTestTimeoutInSeconds>3.5</parallelTestTimeoutInSeconds>
        <parallelTestTimeoutForcedInSeconds>5</parallelTestTimeoutForcedInSeconds>
        <perCoreThreadCount>true</perCoreThreadCount>
        <includes>
            <include>**/FunctionTestSuite.java</include>
        </includes>
    </configuration>
    

    可以在link 找到详细的解释。它逐步提供了完整的描述,以使用surefire-maven-plugin并行运行JUnit测试。

    注意:此代码 sn-p 显示所有可用选项。您可以根据需要更改或删除一些选项!

    【讨论】:

    • 我是 Surefire 的开发者,所以我可以回答您的问题。如果您不喜欢阅读我们的文档,您可以转向更简单的样式并使用 IntelliJ IDEA。它是使用自动完成功能的好工具。此功能可帮助您添加新的配置参数,并且当您将鼠标悬停在行上时会显示文档。
    • &lt;include&gt;FunctionTestSuite.class&lt;/include&gt; 是错误的。应该是&lt;include&gt;**/FunctionTestSuite.java&lt;/include&gt;&lt;include&gt;FunctionTestSuite&lt;/include&gt;
    • 我个人不会设置parallelTestTimeoutForcedInSeconds,除非它是一个性能测试集。超时应该是预期执行时间的 10 倍。
    • 不要只坚持Spring friendly tutorials。让我们阅读原文tutorials
    • 我已经添加了所有可能的选项并写在注释中,以便根据需要使用。
    猜你喜欢
    • 2021-05-16
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 2018-05-26
    • 2015-12-19
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    相关资源
    最近更新 更多