是否有可能在构建时默认运行某些JUnit测试用例?
目标:
我们有两种测试用例:
在构建服务器上,我们不希望运行集成测试(DB不可用等)。但是,应该运行单元测试。目前,我们通过将集成测试保留在CM中并由开发人员根据需要启用来实现这一目标。
这是一项繁琐的安排。我们想要的是默认情况下,告诉maven只运行单元测试。我可以采用的一种方法是将集成测试保存在一个单独的包中,该包不是默认构建的一部分。但是,这会使测试目标代码和测试用例在物理上分开,并且通常会随着时间的推移而不同步。
有什么好的解决方案吗?
答案 0 :(得分:2)
您可以在pom中使用不同的配置文件。默认情况下,您排除集成测试。
<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>
要运行integrationstest,您可以这么简单:mvn clean integration-test -P integration-test-builder