我希望我的Maven构建可以运行大多数单元测试。但是,在一个项目中有一些单元测试比较慢,因此我希望将它们排除在外。并偶尔将它们打开。

问题:我该怎么做?

我知道-Dmaven.test.skip=true,但是这会关闭所有单元测试。

我也知道有关跳过集成测试的信息,描述为here。但是我没有集成测试,只有单元测试,也没有对maven-surefire-plugin的任何明确调用。 (我将Maven 2与Eclipse-Maven插件一起使用)。

最佳答案

只跳过该模块中的测试呢?

在此模块的pom.xml中:

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.4.2</version>
        <configuration>
          <skipTests>true</skipTests>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

最终,您可以创建一个配置文件来禁用测试(仍然是模块的pom.xml):
<project>
  [...]
  <profiles>
    <profile>
      <id>noTest</id>
      <activation>
        <property>
          <name>noTest</name>
          <value>true</value>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.4.2</version>
            <configuration>
              <skipTests>true</skipTests>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
  [...]
</project>

对于后一种解决方案,如果您运行mvn clean package,它将运行所有测试。如果运行mvn clean package -DnoTest=true,它将不会运行此模块的测试。

09-05 21:05
查看更多