一尘不染

如何在使用Maven进行集成测试的战争中包括测试类和配置?

tomcat

我目前有一个Maven Web项目,正在尝试为其编写集成测试。对于项目的结构,我已经在 src / test / java
下定义了测试存根,而这些存根的s​​pring bean定义位于 src / test / resources下

我想做的是,在构建战争构件时,我希望所有测试存根类都可以编译并包含在战争中以及Spring bean定义文件。我已经尝试使用Maven
War插件来做到这一点,但是我唯一能复制的就是资源。 简而言之,我想利用测试类路径并将所有这些类包括在我的war文件中。

看来带有maven jetty插件的useTestClassPath选项可以解决我的问题,但是我正在处理的当前项目当前正在使用Tomcat
6.0。是否有另一个Maven插件,或者我可以配置Maven War插件以实现我的目标的方法?


阅读 222

收藏
2020-06-16

共1个答案

一尘不染

您也可以直接做到这一点。这会将测试类和测试资源都添加到WEB-INF / classs中:

        <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.7</version>
            <executions>
                <execution>
                    <phase>process-test-classes</phase>
                    <configuration>
                        <target>
                            <copy todir="${basedir}/target/classes">
                                <fileset dir="${basedir}/target/test-classes" includes="**/*" />
                            </copy>
                        </target>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

我还建议您将其放在单独的配置文件(如“集成”)中,并覆盖该配置文件中的软件包名称,以免在没有打包测试和测试战争的情况下混淆正常战争。

有关配置文件的完整示例在此处。您可能会遇到mvn clean package有战争war-it-test.war,而不包括测试,或者你可能会遇到mvn clean package -Pintegration有战争war-it-test-integration.war与包括测试的战争。

2020-06-16