如何在Maven构建中永久排除一个测试类

Kon*_*itz 1 maven maven-surefire-plugin maven-compiler-plugin

我试图从我的maven构建中排除一个测试(我不希望编译或执行测试).以下不起作用:

<project ...>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>**/MyTest.java</exclude>
          </excludes>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
Run Code Online (Sandbox Code Playgroud)

实现目标的正确方法是什么?我知道我可以使用命令行选项-Dmaven.test.skip=true,但我希望这可以成为其中的一部分pom.xml.

Irt*_*aza 7

使用感叹号 (!) 排除一个测试类

mvn test -Dtest=!LegacyTest
Run Code Online (Sandbox Code Playgroud)

排除一种测试方法

mvn verify -Dtest=!LegacyTest#testFoo
Run Code Online (Sandbox Code Playgroud)

排除两种测试方法

mvn verify -Dtest=!LegacyTest#testFoo+testBar
Run Code Online (Sandbox Code Playgroud)

排除带有通配符 (*) 的包

mvn test -Dtest=!com.mycompany.app.Legacy*
Run Code Online (Sandbox Code Playgroud)

这是来自: https: //blog.jdriven.com/2017/10/run-one-or-exclude-one-test-with-maven/


Art*_*lpe 6

跳过测试

文档中,如果您想跳过测试,可以使用:

<project>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.17</version>
        <configuration>
          <excludes>
            <exclude>**/MyTest.java</exclude>
          </excludes>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
Run Code Online (Sandbox Code Playgroud)

在您的示例中,请参阅您使用的差异,<artifactId>maven-compiler-plugin</artifactId>并且文档说您应该使用<artifactId>maven-surefire-plugin</artifactId>插件.

并且,如果要禁用所有测试,可以使用:

    <configuration>
      <skipTests>true</skipTests>
    </configuration>
Run Code Online (Sandbox Code Playgroud)

此外,如果您正在使用JUnit,您可以使用@Ignore,并添加消息.

从编译中排除测试

这个答案,你可以使用.诀窍是拦截<id>default-testCompile</id> <phase>test-compile</phase>(默认测试编译阶段)并排除类:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <executions>
    <execution>
      <id>default-testCompile</id>
      <phase>test-compile</phase>
      <configuration>
        <testExcludes>
          <exclude>**/MyTest.java</exclude>
        </testExcludes>
      </configuration> 
      <goals>
        <goal>testCompile</goal>
      </goals>
    </execution>                  
  </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)