【发布时间】:2012-08-20 01:19:31
【问题描述】:
当我运行maven clean install 时,它总是执行src/test/java 中的所有测试有没有办法跳过所有测试,只运行简单的构建而不进行任何测试。
我希望我的测试在 src/test/java 中,但我想告诉 maven 不要执行它们。我一直在互联网上寻找类似的东西,但我没有找到答案。
有没有办法做到这一点?
【问题讨论】:
当我运行maven clean install 时,它总是执行src/test/java 中的所有测试有没有办法跳过所有测试,只运行简单的构建而不进行任何测试。
我希望我的测试在 src/test/java 中,但我想告诉 maven 不要执行它们。我一直在互联网上寻找类似的东西,但我没有找到答案。
有没有办法做到这一点?
【问题讨论】:
这里所有的答案都是正确的。准确地说,
-DskipTests - 编译测试类,但跳过运行它们,
-Dmaven.test.skip=true - 跳过编译测试文件,也会这样做不要运行它们
【讨论】:
【讨论】:
我认为最简单的是:mvn clean package -Dmaven.skip.tests=true
我认为这是使用的方法,因为它不会让您更改 pom,因此不必对项目进行更改。
【讨论】:
我们使用 Surefire 进行单元测试,使用 Failsafe 进行集成测试。
跳过所有测试:
mvn clean package -DskipTests
只跳过故障安全测试:
mvn clean package -DskipIT
要跳过 Surefire,您当然需要在编译测试类之后显式调用 Failsafe 插件的集成测试目标:
mvn clean test-compile failsafe:integration-test
【讨论】:
当我的测试运行时,我最喜欢的管理方式是创建一个名为 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,当您不希望它们运行时。当您有集成 和 单元测试,并且希望只使用一个变量运行或禁用两组测试时,这非常有用。
【讨论】:
你也可以选择使用
mvn install -Dmaven.test.skip
来自Maven 网站:
如果你绝对必须,你也可以使用 maven.test.skip 属性来跳过编译测试。 maven.test.skip 受到 Surefire、Failsafe 和 Compiler Plugin 的认可。
按原样,您甚至不会编译测试源代码。
【讨论】:
来自http://maven.apache.org/plugins/maven-surefire-plugin/examples/skipping-test.html:
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.2</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
[...]
</project>
【讨论】:
使用这个
mvn clean install -DskipTests
【讨论】: