我希望我的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
,它将不会运行此模块的测试。