在测试运行之前跳过Maven war包装

时间:2016-12-12 11:16:46

标签: maven maven-3 maven-surefire-plugin maven-failsafe-plugin maven-war-plugin

我有一个maven项目,它有一些基于Selenium的集成测试,可以在名为sit的包中运行。我已将故障安全插件配置为在包中包含测试文件,例如。 <include>sit/**/*Test.java</include>

我正在尝试运行mvn clean install并且当它启动测试时我注意到它实际上没有运行maven-war-plugin,即在运行测试之前没有将它打包成战争。但是,如果我运行mvn clean install -Dmaven.test.skip=true,那么它确实成功打包了战争。 (我也有货运插件配置为部署战争,这是我注意到有一个问题,因为它未能部署一个不存在的战争)

我的pom的结构类似于下面的

<project ...>
    <modelVersion>4.0.0</modelVersion>

    <groupId>a</groupId>
    <artifactId>a</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <dependencies>
       ...
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>2.18.1</version>

                <configuration>
                    <includes>
                        <include>sit/**/*Test.java</include>
                    </includes>
                </configuration>
                <executions>
                    <execution>
                        <id>integration-test</id>
                        <phase>integration-test</phase>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>             
            </plugin>
         </plugins>
    </build>
</project>

为什么在没有设置-Dmaven.test.skip=true的情况下没有运行war插件的任何想法?

在两种情况下都会创建类文件

2 个答案:

答案 0 :(得分:2)

尝试将集成测试的测试类重命名为*IT.java后缀(或前缀...),因为这是maven-failsafe-plugin运行测试的约定。

*Test.java是另一种按maven-surefire-plugin运行测试的惯例。

所以不需要排除它们,只需将其重命名即可。

答案 1 :(得分:1)

好吧,似乎问题是maven-surefire试图将集成测试作为单元测试运行,因此我们必须明确地将集成测试排除在surefires单元测试之外

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    ...
    <configuration>
        <excludes>
            <exclude>sit/**/*Test.java</exclude>
        </excludes>
    </configuration>
</plugin>
相关问题