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

rhfm7lfc  于 2023-08-03  发布在  Maven
关注(0)|答案(3)|浏览(117)

我试图从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>

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

hmtdttj4

hmtdttj41#

跳过测试

docs中,如果您想跳过测试,可以用途:

<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>

字符串
请参阅不同之处,在你的例子中,你使用<artifactId>maven-compiler-plugin</artifactId>,而文档说你应该使用<artifactId>maven-surefire-plugin</artifactId>插件。
如果你想禁用所有测试,你可以用途:

<configuration>
      <skipTests>true</skipTests>
    </configuration>


此外,如果您使用的是JUnit,您可以使用@Ignore,并添加消息。

排除编译测试

this答案,你可以使用。诀窍是拦截<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>

vlju58qv

vlju58qv2#

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

mvn test -Dtest=!LegacyTest

字符串

排除一种测试方法

mvn verify -Dtest=!LegacyTest#testFoo

排除两种测试方法

mvn verify -Dtest=!LegacyTest#testFoo+testBar

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

mvn test -Dtest=!com.mycompany.app.Legacy*


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

mepcadol

mepcadol3#

在Maven中默认跳过test编译和执行的最简单方法是在pom.xml中添加以下属性:

<properties>
    <maven.test.skip>true</maven.test.skip>
 </properties>

字符串
您仍然可以通过从命令行重写属性来更改行为:

-Dmaven.test.skip=false


或者通过激活配置文件:

<profiles>
    <profile>
        <id>testing-enabled</id>
        <properties>
           <maven.test.skip>false</maven.test.skip>
        </properties>
    </profile>
</profiles>

相关问题