无法在maven surefire中运行多次执行?

pin*_*her 2 java maven maven-surefire-plugin

我想运行名称以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>
Run Code Online (Sandbox Code Playgroud)

但我不知道如何运行,我搜索了很多,我错过了一些东西.

我试过surefire:test,它跳过了上面配置中定义的所有测试用例.所以,我试过surefire:resource-tests,maven说没有目标没有定义.

我正在使用eclipse运行我的maven构建,通过传递这些参数.我如何按执行ID运行?

使用surefire运行时如何选择特定的执行:当我在我的pom中定义多次执行时测试?

我错过了什么?任何帮助,将不胜感激.

Tun*_*aki 7

您当前的配置存在一些问题:

  • 你是强迫maven-surefire-pluginresource-tests阶段执行,但这个阶段不存在.您应该删除该声明以保持默认的插件绑定阶段,即test.
  • 你正在调用目标,resource-testsmaven-surefire-plugin 没有定义这样的目标.
  • 所述<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>
Run Code Online (Sandbox Code Playgroud)

如果您有多个执行并且想要"选择"其中一个,则可以使用配置文件:

<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>
Run Code Online (Sandbox Code Playgroud)

使用以下插件配置:

<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>
Run Code Online (Sandbox Code Playgroud)

有了这样的配置:

  • 当你运行时mvn clean test -Presource-tests,只会**/*ResourceTest.java测试匹配的类
  • 当你运行时mvn clean test -Ptask-tests,只会**/*TaskTest.java测试匹配的类