And*_* H. 5 java junit4 maven maven-surefire-plugin
我有一个测试套件,它需要事先执行一些设置代码,以确保我们数据库中的某些数据是正确的。
我们使用 maven surefire 插件并行运行测试。${tests.wildcard}由配置文件指定。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
<configuration>
<forkCount>4</forkCount>
<reuseForks>false</reuseForks>
<includes>
<include>${tests.wildcard}</include>
</includes>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
在surefire并行运行我的测试之前,我希望每次整个maven执行只能运行一次方法。我怎样才能做到这一点?
您可以有一个特殊的测试用例来执行您的验证代码(如果是这种情况,则会失败)。
然后,该测试用例将由特定的 Maven Surefire 执行(不包括其他测试)执行,并附加到该阶段之前发生的testMaven 阶段(如process-test-classes):因此,每次 Maven 运行且在任何其他测试之前,有效地调用一次。
然后,正常test阶段将执行任何其他所需的测试,不包括特殊的初始化测试。
这种配置的一个例子是:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<configuration>
<excludes>
<exclude>**/InitTest.java</exclude>
</excludes>
</configuration>
<executions>
<execution>
<id>test-init</id>
<phase>process-test-classes</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<test>InitTest</test>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
请注意,任何 Surefire 执行的全局配置都将排除特殊的初始化测试。然后,将执行额外的执行(在该test阶段之前),并且仅运行 init 测试(使用该<test>元素,该元素优先于任何其他包含/排除)。
因此,您将具有以下流程:
更新请
注意,您可以通过覆盖默认的 Surefire 测试执行(具有default-test执行 id)来运行特殊测试(并排除其他测试),然后以更语义上更正确的方式实现相同的目标,然后为其余部分添加另一个 Surefire 执行(如上面描述的是全局配置,这次是具体的执行配置)。
通过这种方法,所有内容都将附加到阶段test,这就是为什么它在语义上会更正确,尽管 pom 中有点冗长。
| 归档时间: |
|
| 查看次数: |
2397 次 |
| 最近记录: |