2010-08-13 49 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>

在配置部

相關問題