2010-07-01 123 views
3

我使用Spring 2.5.6並使用Maven 2.2.1構建項目。我們在Spring中使用PropertyPlaceholderConfigurer bean來加載用於配置數據庫之類的屬性。相當標準的東西。我們也有兩套不同的測試:單元測試和集成測試。Spring + Maven:單元測試和集成測試的單獨屬性文件

我希望能夠使用不同的屬性文件來爲兩種不同類型的測試配置不同的數據庫url。例如,我想單元測試使用localhost數據庫和集成測試來使用mydatabase.example.com數據庫。

我已經嘗試了幾個變化,我將屬性文件放在單獨的子目錄中(一個用於單元測試,另一個用於集成測試)。從那裏開始,我嘗試了使用additionalClasspathElements標籤作爲maven-failsafe-plugin,但這似乎並不奏效。我嘗試使用maven-antrun-plugin將文件複製到target/classes,但是當我運行mvn verify -Dtest=sometest時沒有觸發。

<property name="locations"> 
    <value>classpath:${buildEnvironment}/my-test.properties</value> 
</property> 

但以春拒絕解決${buildEnvironment}

我也Maven中使用systemPropertyVariables設置一個名爲buildEnvironment屬性,然後我試圖在我的Spring bean定義引用嘗試。在這一點上,我沒有想法。我確信有一個很好的,直接的方法來做到這一點,但我無法弄清楚。

任何意見將不勝感激。

+0

你見過這個相關的問題與不同的答案http://stackoverflow.com/questions/3076466/maven-using-different-spring-properties-for-integration-tests – JoseK 2010-07-07 08:40:42

+0

我也無法得到PropertyPlaceholderConfigurer看到與additionalClasspathElements一起添加的資源。有沒有人有任何想法,爲什麼這不起作用? – Lyle 2012-10-31 16:02:46

回答

1

您可以使資源的篩選和創建Maven的屬性:

<build> 
    <resources> 
    <resource> 
     <directory>src/test/resources</directory> 
     <filtering>true</filtering> 
    </resource> 
    </resources> 
</build> 

<properties> 
    <buildEnvironment>yourValue</buildEnvironment> 
</properties> 

$ {buildEnvironment}在Spring的配置將被解析爲 「yourValue」(假設它是在src /測試/資源/)

+0

這類作品,儘管如果你想爲測試階段工作,你必須使用而不是。 不幸的是,沒有使用配置文件,似乎沒有辦法爲集成測試和單元測試設置屬性。這是可以接受的,但不是我所希望的。 :) – organicveggie 2010-07-05 17:20:30