不能 运行 在 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-pluginresource-tests 阶段执行,但此阶段 does not exist。您应该删除该声明以保留默认的插件绑定阶段,即 test.
  • 您正在调用目标 resource-testsmaven-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 会被测试