我在POM中有配置文件配置,使用surefire-maven-plugin & junit连接,通过配置文件只运行特定的测试。
mvn clean test -Pgroup1 --also-make -DfailIfNoTests=false
它在以下版本中按预期工作:
<maven-surefire-plugin.version>2.22.1</maven-surefire-plugin.version>
<junit.version>4.12</junit.version>
但在我尝试升级它们时停止正常工作:
<maven-surefire-plugin.version>3.0.0-M5</maven-surefire-plugin.version>
<junit.version>4.13</junit.version>
在这种情况下,mvn test
总是运行所有的测试,因为我不会在命令行中设置配置文件。
<profiles>
<profile>
<id>default</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<includes>
<include>**/unit/*Test.java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>group1</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludes>
<exclude>**/unit/**</exclude>
</excludes>
<groups>com.Group1</groups>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>group2</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludes>
<exclude>**/unit/**</exclude>
</excludes>
<groups>com.Group2</groups>
</configuration>
</plugin>
</plugins>
</build>
</profile>
......................
</profiles>
每个测试类都具有链接到配置文件的连接接口:
@Category(Group1.class)
@RunWith(JUnitParamsRunner.class)
public class Group1Test {
玩“默认”配置文件和“activeByDefault”属性也没有给我任何结果。有什么想法如何修复它?
1条答案
按热度按时间68bkxrlz1#
我通过在默认插件和配置文件插件中使用"exections"来实现这个功能(顺便说一句,这并不是默认插件的覆盖)
在配置文件中,我删除了"default-test",否则"excludes"是从默认设置中设置的,但这可能是在我将"配置"移到"执行"之前。您必须记住,"default-test"是活动的,除非您禁用它,但在主体中不使用"执行"对我不起作用。
"default-test"是Maven的"id",表示主体中的一个变量,这就是为什么我在主体中的"execution"中使用这个名称。
我认为您可以不考虑"阶段"元素,因为这是"测试"目标的默认设置,但我非常肯定您需要目标。
祝你好运!