我想运行名称以ResourceTest.java结尾的测试类,所以我定义了以下执行。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</configuration>
<version>2.12.2</version>
<executions>
<execution>
<id>resource-tests</id>
<phase>resource-tests</phase>
<goals>
<goal>resource-tests</goal>
</goals>
<configuration>
<includes>**/*ResourceTest.java</includes>
<!-- <exludes>**/*.java</exludes> -->
</configuration>
</execution>
</executions>
</plugin>
但是我不知道如何运行这个,我搜索了很多而且我错过了一些东西。
我试过surefire:test,它跳过了上面配置中定义的所有测试用例。所以,我试过surefire:resource-tests
,maven说没有定义任何目标。
我正在使用eclipse运行我的maven构建,通过传递这些参数。我如何按执行ID运行?
如何在使用surefire运行时选择特定执行:当我在我的pom中定义多次执行时测试?
我错过了什么?任何帮助将不胜感激。
答案 0 :(得分:7)
您当前的配置存在一些问题:
maven-surefire-plugin
在resource-tests
阶段执行,但此阶段does not define such a goal。您应该删除该声明以保持默认插件绑定阶段,即test
。resource-tests
,但maven-surefire-plugin
{{3}}。<includes>
元素定义不明确。它下面应该有一个<include>
标记。<configuration>
元素下完成,而不是针对每个<executions>
。<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.2</version>
<configuration>
<includes>
<include>**/*ResourceTest.java</include>
</includes>
</configuration>
</plugin>
当你有多个执行并且你想要&#34;选择&#34;其中之一,您可以使用个人资料:
<profiles>
<profile>
<id>resource-tests</id>
<properties>
<test-classes>**/*ResourceTest.java</test-classes>
</properties>
</profile>
<profile>
<id>task-tests</id>
<properties>
<test-classes>**/*TaskTest.java</test-classes>
</properties>
</profile>
</profiles>
使用以下插件配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.2</version>
<configuration>
<includes>
<include>${test-classes}</include>
</includes>
</configuration>
</plugin>
有了这样的配置:
mvn clean test -Presource-tests
时,只会测试与**/*ResourceTest.java
匹配的类mvn clean test -Ptask-tests
时,只会测试与**/*TaskTest.java
匹配的类