Maven Profile不会运行适当的测试

时间:2015-01-26 10:00:38

标签: maven

我已配置了仅运行集成测试的配置文件,但它仍在运行所有测试。 这是配置:

    <profile>
        <id>integration</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.18.1</version>
                    <executions>
                        <execution>
                            <id>integration-test</id>
                            <goals>
                                <goal>test</goal>
                            </goals>
                            <phase>test</phase>
                            <configuration>
                                <includes>
                                    <include>**/*IT.java</include>
                                </includes>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>

我尝试使用像http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html解释的正则表达式,但我得到了这个不起作用。 我如何只使用IT.java获得运行该测试的测试?

由于

1 个答案:

答案 0 :(得分:0)

您尚未重新配置surefire运行,而是在生命周期中添加了另一个。这样,surefire:test运行两次,一次使用默认执行ID(default-test),一次使用新执行(integration-test

如果您只想更改正在运行的测试,可以使用:

<profile>
    <id>integration</id>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.18.1</version>
                <configuration>
                    <includes>
                        <include>**/*IT.java</include>
                    </includes>
                </configuration>
            </plugin>
        </plugins>
    </build>
</profile>

只会重新配置现有的执行。

然而,正如khmarbaise已在评论中写道,仅仅使用maven-failsafe-plugin更有意义。如果你真的想跳过正常的单元测试(无论如何你想要那个?),你可以在你的个人资料中明确禁用surefire(使用skipTests - 配置)。