是否可以在构建时默认运行某些 JUnit 测试用例?
目标:
我们有两种测试用例:
- “单元测试”
- “集成测试”(测试直至数据库的完整路径)
在构建服务器上,我们不希望运行集成测试(数据库不可用等)。但是,应该运行单元测试。目前,我们通过在 CM 中注释掉集成测试并由开发人员根据需要启用来实现这一目标。
这是一个麻烦的安排。我们想要的是默认情况下,告诉 Maven 仅运行单元测试。我认为实现这一点的一种方法是将集成测试保存在一个单独的包中,该包不是默认构建的一部分。但是,这将使测试目标代码和测试用例在物理上分离,并且通常会随着时间的推移而变得不同步。
有什么好的解决办法吗?
最佳答案
您可以在 pom.xml 中使用不同的配置文件。默认情况下,您排除集成测试。
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<groupId>org.apache.maven.plugins</groupId>
<version>2.9</version>
<configuration>
<skip>false</skip>
<useFile>false</useFile>
<argLine>-Xms1024m -Xmx1024m -XX:MaxPermSize=512m</argLine>
<excludes>
<exclude>**/*IntegrationTest.java</exclude>
</excludes>
</configuration>
</plugin>
<profiles>
<profile>
<id>integration-test-builder</id>
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<groupId>org.apache.maven.plugins</groupId>
<version>2.9</version>
<configuration>
<skip>false</skip>
<useFile>false</useFile>
<argLine>-Xms1024m -Xmx1024m -XX:MaxPermSize=512m</argLine>
<excludes>
<exclude>none</exclude>
</excludes>
<includes>
<include>**/*IntegrationTest.java</include>
</includes>
</configuration>
<executions>
<execution>
<id>integration-tests</id>
<phase>integration-test</phase>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
要运行集成测试,您只需执行以下操作:mvn clean集成测试-P集成测试构建器
关于maven - JUnit:默认选择性地不运行一些测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22940571/