猿问

如何在运行junit4集成测试之前通过maven部署war?

我希望 Maven 在运行 jUnit 测试之前部署 war。


我已经添加了故障安全插件和配置,但测试后部署仍然完成。


测试不是由故障安全插件运行吗?


<build>

    <finalName>testWar</finalName>

    <plugins>

    <plugin>

        <groupId>org.apache.maven.plugins</groupId>

        <artifactId>maven-failsafe-plugin</artifactId>

        <version>2.16</version>

        <configuration>

            <systemPropertyVariables>

                <wildfly.remote.port>10090</wildfly.remote.port>

            </systemPropertyVariables>

        </configuration>

        <executions>

            <execution>

                <goals>

                    <goal>integration-test</goal>

                    <goal>verify</goal>

                </goals>

            </execution>

        </executions>

    </plugin>


    <plugin>

        <groupId>org.wildfly.plugins</groupId>

        <artifactId>wildfly-maven-plugin</artifactId>

        <version>1.2.1.Final</version>


        <configuration>

            <hostname>host</hostname>

            <port>10090</port>

            <username>user</username>

            <password>pw</password>

        </configuration>


        <executions>

            <execution>

                <id>wildfly-run</id>

                <phase>pre-integration-test</phase>

                <goals>

                    <goal>deploy</goal>

                </goals>


            </execution>

        </executions>

    </plugin>

</plugins>

</build>


慕标5832272
浏览 95回答 1
1回答

慕容708150

您报告的行为表明您的测试是在test阶段而不是integration-test阶段中运行的。这是因为默认情况下 Maven Surefire 和 Maven Failsafe 插件都使用类名约定来区分这两种类型的测试,如下所述:默认单元测试行为Maven Surefire 插件在该阶段运行单元test测试。默认情况下,它根据测试的类名选择要执行的测试,如Maven Surefire Plugin |中所述。测试的包含和排除:“**/Test*.java” - 包括其所有子目录以及以“Test”开头的所有 Java 文件名。“**/*Test.java” - 包括其所有子目录以及所有以“Test”结尾的 Java 文件名。“**/*Tests.java” - 包括其所有子目录以及所有以“Tests”结尾的 Java 文件名。“**/*TestCase.java” - 包括其所有子目录以及以“TestCase”结尾的所有 Java 文件名。默认集成测试行为Maven Failsafe 插件在该阶段运行集成测试integration-test。默认情况下,它还会根据测试的类名选择要执行的测试,如[Maven Failsafe Plugin | Maven Failsafe Plugin]中所述。测试的包含和排除]( https://maven.apache.org/surefire/maven-failsafe-plugin/examples/inclusion-exclusion.html:“**/IT*.java” - 包括其所有子目录以及所有以“IT”开头的 Java 文件名。“**/*IT.java” - 包括其所有子目录以及所有以“IT”结尾的 Java 文件名。“**/*ITCase.java” - 包括其所有子目录以及所有以“ITCase”结尾的 Java 文件名。因此,您可能只需要重命名集成测试类以符合上面显示的三个约定之一。
随时随地看视频慕课网APP

相关分类

Java
我要回答