不能 运行 在 maven surefire 中多次执行?
Cannot run multiple executions in maven surefire?
我想运行测试名称以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 运行?
如何 select 当 运行 surefire:test 当我在我的 pom 中定义了多个执行时 select 特定执行?
我错过了什么?任何帮助将不胜感激。
您当前的配置存在几个问题:
- 您强制
maven-surefire-plugin
在 resource-tests
阶段执行,但此阶段 does not exist。您应该删除该声明以保留默认的插件绑定阶段,即 test
.
- 您正在调用目标
resource-tests
但 maven-surefire-plugin
does not define such a goal.
<includes>
元素定义错误。它下面应该有一个<include>
标签。
- 您从插件配置中排除了所有 Java 文件,因此不会进行测试 运行
- 插件的配置应该在
<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>
当你有多个执行并且你想要 "select" 其中一个时,你可以使用配置文件:
<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
会被测试
我想运行测试名称以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 运行?
如何 select 当 运行 surefire:test 当我在我的 pom 中定义了多个执行时 select 特定执行?
我错过了什么?任何帮助将不胜感激。
您当前的配置存在几个问题:
- 您强制
maven-surefire-plugin
在resource-tests
阶段执行,但此阶段 does not exist。您应该删除该声明以保留默认的插件绑定阶段,即test
. - 您正在调用目标
resource-tests
但maven-surefire-plugin
does not define such a goal. <includes>
元素定义错误。它下面应该有一个<include>
标签。- 您从插件配置中排除了所有 Java 文件,因此不会进行测试 运行
- 插件的配置应该在
<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>
当你有多个执行并且你想要 "select" 其中一个时,你可以使用配置文件:
<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
会被测试