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

Pet*_*yen 8 spring integration-testing tomcat stub maven

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

我想做的是,当我构建我的war工件时,我希望所有的测试存根类都可以编译并包含在war中以及spring bean定义文件中.我试图用maven war插件做到这一点,但我能够复制的唯一东西就是资源.简单地说,我想使用测试类路径并在我的war文件中包含所有这些类.

似乎带有maven jetty插件的useTestClassPath选项可以解决我的问题,但我正在处理的当前项目目前正在使用Tomcat 6.0.是否有另一个maven插件或我可以配置maven war插件来实现我的目标?

Iva*_*pov 5

您也可以直接进行。这会将测试类和测试资源添加到 WEB-INF/classes 中:

        <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>
Run Code Online (Sandbox Code Playgroud)

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

带有配置文件的完整示例在这里。你可能会mvn clean package参加一场不包含测试的战争war-it-test.war,或者你可能会mvn clean package -Pintegration参加一场war-it-test-integration.war包含测试的战争。