我目前有一个maven web项目,我正在尝试编写集成测试.对于项目的结构,我在src / test / java下定义了测试存根,而这些存根的spring bean定义位于src / test / resources下.
我想做的是,当我构建我的war工件时,我希望所有的测试存根类都可以编译并包含在war中以及spring bean定义文件中.我试图用maven war插件做到这一点,但我能够复制的唯一东西就是资源.简单地说,我想使用测试类路径并在我的war文件中包含所有这些类.
似乎带有maven jetty插件的useTestClassPath选项可以解决我的问题,但我正在处理的当前项目目前正在使用Tomcat 6.0.是否有另一个maven插件或我可以配置maven war插件来实现我的目标?
解决方法:
你也可以直接做到.这会将测试类和测试资源添加到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>
我还建议你将它放在单独的配置文件中,如“集成”,并覆盖该配置文件中的包名称,以便在没有打包测试和测试战争时无法混淆正常的战争.
配置文件的完整示例是here.您可以运行mvn clean package以获得war war-it-test.war而不包含测试,或者您可以运行mvn clean package -Pintegration来进行war war-it-test-integration.包括测试在内的战争.