排除Maven构建中的测试

31
当我运行maven clean install时,它总是执行src/test/java中的所有测试,有没有办法跳过所有测试,只进行简单的构建而不进行任何测试。
我希望我的测试位于src/test/java中,但我想告诉maven不要执行它们。我在互联网上寻找了这样的东西,但我没有找到答案。
有没有办法做到这一点?
8个回答

57

21

你也可以选择使用

mvn install -Dmaven.test.skip

Maven网站得知:

如果您非常必须,您还可以使用属性来跳过编译测试。 Surefire、Failsafe和编译器插件都会遵守。

正如其所说,您甚至不会编译测试源代码。


2
真的是这样,-DskipTests 对我没用,但对你有用! - Xdg

7

4

我管理测试执行的一个喜欢的方式是创建一个名为skip-tests的Maven变量,并将其默认设置为true。然后您可以像这样使用该变量:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.12.2</version>
    <configuration>
      <skipTests>${skip-tests}</skipTests>
    </configuration>
  </plugin>

这样做可以在构建时传入变量-Dskip-tests=false,当您不想运行测试时使用。这在您需要运行或禁用两组测试的情况下非常有用,特别是在集成测试和单元测试同时存在时。

4

use this

mvn clean install -DskipTests


3
这里的所有答案都是正确的。要准确地说, -DskipTests - 编译测试类,但跳过运行它们, -Dmaven.test.skip=true - 跳过编译测试文件并且也不运行它们。

0

我们使用Surefire进行单元测试,使用Failsafe进行集成测试。

要跳过所有测试:

mvn clean package -DskipTests

跳过仅故障安全测试:

mvn clean package -DskipIT

为了仅跳过Surefire,您需要在编译测试类之后显式调用Failsafe插件的integration-test目标:
mvn clean test-compile failsafe:integration-test

-1
我认为最简单的方法是这样的:mvn clean package -Dmaven.skip.tests=true 我认为这是一个可行的方法,因为它不需要更改pom文件,也不需要对项目进行任何修改。

1
它是-Dmaven.test.skip=true。 - Evgeny Goldin
跳过编译测试,参见http://maven.apache.org/surefire/maven-surefire-plugin/examples/skipping-test.html - Paul Verest

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接