我有2套测试。一个用于junit测试,另一个用于db-unit测试。我只想在一个单独的阶段执行db-unit测试用例,例如说“ mvn integration-test”。
junit test cases folder: bso
db-unit test cases folder: dao
但是当我运行“ mvn integration-test”时,它也会自动运行junit测试用例。因此,我排除了junit测试用例文件夹,即“ bso”。但是它仍然会在bso文件夹中运行测试用例。 在这里查看我的pom文件。如何仅在“ dao”文件夹中运行测试用例?
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
<configuration>
<trimStackTrace>false</trimStackTrace>
</configuration>
<executions>
<execution>
<id>unit-tests</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<skip>true</skip>
</configuration>
</execution>
<execution>
<id>integration-tests</id>
<phase>integration-test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<skip>false</skip>
<includes>
<include>**/dao/**</include>
</includes>
<excludes>
<exclude>**/bso/**</exclude>
</excludes>
</configuration>
</execution>
</executions>
</plugin>
答案 0 :(得分:0)
将exclude
中的execution
标签从id
中删除为集成测试,将导致在dao
包下执行测试。
以下是相同的代码段:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
<configuration>
<trimStackTrace>false</trimStackTrace>
</configuration>
<executions>
<execution>
<id>unit-tests</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<skip>true</skip>
</configuration>
</execution>
<execution>
<id>integration-tests</id>
<phase>integration-test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<skip>false</skip>
<includes>
<include>**/dao/**</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
答案 1 :(得分:0)
通常,您需要使用不同的插件执行单元和集成测试 单元测试通常由Maven Surefire插件处理,而集成测试则由Maven Failsafe插件处理。
为什么? 出于我的考虑,有两个原因:
默认情况下,Surefire将识别为以*Test
结尾的测试类,Failsafe插件与*IT
一起使用(集成测试)
因此,请将它们放在不同的文件夹下以免混淆,您可以使用。
完成后,检查报告(在目标文件夹中,您会找到surefire-reports
和failsafe-reports
文件夹),并发现插件确实选择了正确的测试用例