2010-08-13 46 views
2

我正在尝试使用Spring,Maven和Jetty进行集成测试。在集成测试开始使用Maven Jetty插件和运行爆炸式预集成测试目标之前,我有一个Jetty服务器来启动运行我的应用程序。这适用于使用net.sourceforge.jwebunit.junit.WebTestCase进行测试。如何在爆炸战中使用Maven,Jetty和Spring将测试类包含在集成测试中?

我现在需要做的是在集成测试启动时将“额外”bean加载到应用程序中。如果我的测试类和资源可以以某种方式与应用程序一起部署,这很容易。任何人都知道简单的方法来做到这一点?

我希望能够“模拟”一些东西(例如发送电子邮件)并编写集成测试,而这些测试不能单纯通过“前端”来完成。

回答

5

我现在需要做的是在启动时的集成测试都加载到应用程序“额外”的豆。如果我的测试类和资源可以以某种方式与应用程序一起部署,这很容易。任何人都知道简单的方法来做到这一点?

我会创建一个单独的集成测试模块,把额外的测试类和配置文件在树,并使用Overlays创建“测试WAR”,包括这些文件。有关类似的方法,请参阅JSFUnit With Maven

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> 
    ... 
2

我在this thread上找到了一个简单的解决方案。 Jetty插件支持将额外的东西添加到Web应用程序的类路径中。这是完美的,因为我只需用@Component注释我的额外测试bean,并将它们加载到应用程序中。

<webAppConfig> 
    <contextPath>/${project.name}</contextPath> 
    <extraClasspath>${project.build.testOutputDirectory}</extraClasspath> 
</webAppConfig> 
+0

确实,这是另一种选择:) – 2010-08-13 16:19:56

1

<useTestClasspath>true</useTestClasspath>

在配置部

相关问题