我希望在 Maven 中运行一些集成测试,并使用如下内容按类别对它们进行分组:
界面:
package com.path.for.testing;
public interface SlowTests {
}
测试类:
import com.path.for.testing.SlowTests
@Category(SlowTests.class)
public class SlowTest {
...
}
Pom 文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
...
<profiles>
...
<profile>
<id>functional-test-slow-tests</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<groups>com.path.for.testing.SlowTests</groups>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
我运行它:mvn clean install -P功能测试慢测试
我的问题是,当它运行时,它似乎循环通过所有测试,而不仅仅是指定的测试。分类在集成测试中不起作用吗?或者我做错了什么?我将根据要求更新更多信息。非常感谢有关此问题的任何帮助或指导,我对此很陌生,很可能我错过了一些明显的东西。谢谢。
编辑响应 User944849:
当使用 -X 参数运行时,我认为故障安全插件会被执行多次。我还添加了您建议的新执行 ID。这是我在项目构建时得到的结果:
[DEBUG] -----------------------------------------------------------------------
[DEBUG] Goal: org.apache.maven.plugins:maven-failsafe-plugin:2.12:integration-test (default-integration-tests)
[DEBUG] Style: Regular
[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?>
...
[DEBUG] -----------------------------------------------------------------------
[DEBUG] Goal: org.apache.maven.plugins:maven-failsafe-plugin:2.12:verify (default-integration-tests)
[DEBUG] Style: Regular
[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?>
测试正在使用您建议的新 ID,但我仍然得到相同的结果,即不需要的测试仍在运行。
最佳答案
如果您使用 -X
运行,您是否看到故障安全插件多次执行?显示的配置不包含 <id>
因此 Maven 可能会将您配置的执行添加到其默认值中。默认运行与模式 **/IT*.java
匹配的任何测试, **/*IT.java
, **/*ITCase.java
.
如果发生这种情况,请添加 <id>
像这样执行:
<execution>
<id>default-integration-tests</id>
....
将重新定义 Maven 在集成测试阶段的默认插件执行,以执行您想要的操作。
更新
@Brad,感谢您测试我的理论,@khmarbaise 感谢您给我另一个想法。
这 2 个目标执行是您应该拥有的。我没有发现你的配置有任何问题,所以我检查了打开 JIRA 的故障安全插件,我发现了一个 possibly related issue这可能会导致使用错误的 JUnit 提供程序。如果这就是您遇到的情况,您可能必须在插件配置中手动指定 JUnit47 提供程序,如 here 所定义。 .
关于maven - 使用带有故障安全插件的 Maven 来运行分类测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10557847/