我正在尝试使用Spring,Maven和Jetty进行集成测试。在集成测试开始使用Maven Jetty插件和运行爆炸的预集成测试目标之前,我有一台Jetty服务器开始运行我的应用程序。这适用于使用net.sourceforge.jwebunit.junit.WebTestCase进行测试。
我现在需要做的是在为集成测试启动时将“额外”bean加载到应用程序中。如果我的测试类和资源可以以某种方式与应用程序一起部署,这将很容易。有人知道一个简单的方法吗?
我希望能够“嘲笑”某些内容(例如发送电子邮件)并编写纯粹通过“前端”无法轻松完成的集成测试。
答案 0 :(得分:5)
我现在需要做的是在为集成测试启动时将“额外”bean加载到应用程序中。如果我的测试类和资源可以以某种方式与应用程序一起部署,这将很容易。有人知道一个简单的方法吗?
我将创建一个单独的集成测试模块,将额外的测试类和配置文件放在源树中,并使用Overlays创建包含这些文件的“测试WAR”。有关类似的方法,请参阅JSFUnit With Maven。
答案 1 :(得分:2)
我在this thread找到了一个简单的解决方案。 Jetty插件支持在Web应用程序的类路径中添加额外的东西。这是完美的,因为我只需要使用@Component注释我的额外测试bean,然后Spring将它们加载到应用程序中。
<webAppConfig>
<contextPath>/${project.name}</contextPath>
<extraClasspath>${project.build.testOutputDirectory}</extraClasspath>
</webAppConfig>
答案 2 :(得分:1)
您可以在pom文件中定义“集成”配置文件,该配置文件通过使用-Pintegration标志运行mvn来触发。然后使用另一个applicationContext.xml定义来自特定于环境的目录的额外bean,例如src / main / external-resources / integration。
<profile>
<id>integration</id>
<properties>
<env>integration</env>
</properties>
<build>
<resources>
<resource>
<directory>src/main/external-resources/${env}</directory>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
...
答案 3 :(得分:1)
<useTestClasspath>true</useTestClasspath>
在配置部分。