如何在爆炸战中包含测试类,以便使用Maven,Jetty和amp;弹簧?

时间:2010-08-13 11:17:23

标签: java spring maven-2 automated-tests jetty

我正在尝试使用Spring,Maven和Jetty进行集成测试。在集成测试开始使用Maven Jetty插件和运行爆炸的预集成测试目标之前,我有一台Jetty服务器开始运行我的应用程序。这适用于使用net.sourceforge.jwebunit.junit.WebTestCase进行测试。

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

我希望能够“嘲笑”某些内容(例如发送电子邮件)并编写纯粹通过“前端”无法轻松完成的集成测试。

4 个答案:

答案 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>

在配置部分。