如果与skipITs
一起使用,maven会忽略在命令行上覆盖的属性-Dit.test=full.Classname
的值。不会运行指定的故障安全测试(案例一)。
与没有skipITs
开关的此特定it.test
相反,导致运行现有的故障安全测试(案例二)。
背景:我试图将surefire测试与故障安全测试运行隔离,即运行它们的两种类型或仅运行其中一种。 maven的电话是:
mvn -Pintegration -DskipTests=true -DskipITs=false -Dit.test=full.Classname verify
在第一种情况下:
mvn -Pintegration -DskipTests=true -DskipITs=false verify
在第二个。
相关配置(pom.xml,仅限片段)为:
<properties>
<skipTests>false</skipTests>
<skipITs>false</skipITs>
</properties>
(这些是默认值)和
<profiles>
<profile>
<id>integration</id>
<build>
<plugins>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<executions>
<execution>
<id>custom<id>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<skipTests>${skipITs}</skipTests>
<skip>${skipITs}</skip>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
您是否也观察过这种情况,或者您最终找到了更好的工作方法?
答案 0 :(得分:1)
默认情况下,Surefire插件在测试阶段运行,通常您将Failsafe插件配置为在集成测试和验证阶段运行,如下所示:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.18.1</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
要仅运行Surefire测试,请使用
mvn clean test
要同时运行Surefire和Failsafe测试,请使用
mvn clean verify
您可以使用<skip>
配置选项完全跳过任何插件。如果您配置Surefire插件,如下所示:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<skip>${skip.surefire}</skip>
</configuration>
</plugin>
您只能通过调用
运行Failsafe测试mvn clean verify -Dskip.surefire=true
答案 1 :(得分:0)
如果集成测试(it.test
)具有非默认名称,我需要相应地添加include
模式,例如(pom.xml片段):
<profiles>
<profile>
<id>dbUnit</id>
<build>
<plugins>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<executions>
<execution>
<id>custom</id>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<skipTests>${skipITs}</skipTests>
<skip>${skipITs}</skip>
<includes>
<include>**/*DbTest.java</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
但这似乎只适用于原始方法。另请注意,如果您的集成测试遵循不同的命名方案,则可能还需要添加默认包含模式。