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

时间:2015-10-01 10:09:03

标签: 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>

但是我不知道如何运行这个,我搜索了很多而且我错过了一些东西。

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

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

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

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

1 个答案:

答案 0 :(得分:7)

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

  • 您强制maven-surefire-pluginresource-tests阶段执行,但此阶段does not define such a goal。您应该删除该声明以保持默认插件绑定阶段,即test
  • 您正在调用目标resource-tests,但maven-surefire-plugin {{3}}。
  • <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>

当你有多个执行并且你想要&#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匹配的类