2012-04-03 63 views
2

我創建一個由駱駝路線組成的ServiceMix模塊。如何在測試基於CamelSpringTestSupport的測試期間設置屬性值

在我的beans.xml,我有:

<osgix:cm-properties id="companyProps" 
    persistent-id="com.company.integration"> 
</osgix:cm-properties> 

<ctx:property-placeholder location=" 
    file:${karaf.base}/etc/com.company.integration.cfg 
" /> 

這意味着我可以使用從文件屬性,如定義的其他項目:

<http-conf:conduit name="*.http-conduit"> 
    <http-conf:authorization> 
     <security:UserName>${username}</security:UserName> 
     <security:Password>${password}</security:Password> 
    </http-conf:authorization> 
</http-conf:conduit> 

我還可以在訪問屬性我Java類,如果我創建一個bean並注入它:

<bean id="myConfig" class="com.company.integration.MyConfig"> 
    <osgix:managed-properties persistent-id="com.company.integration" /> 
</bean> 

問題是當我寫我的單元te STS。目前,我正在使用具有測試值的beans.xml副本,但我當然想使用真正的beans.xml併爲屬性提供值。

public class myTest extends CamelSpringTestSupport 
{ 
@Override 
protected AbstractXmlApplicationContext createApplicationContext() 
{ 
    return new ClassPathXmlApplicationContext(new String[] { 
      "/META-INF/spring/beans.xml" 
     , "/META-INF/spring/test.xml" 
    }); 

} 
} 

我想擺脫test.xml,最好從屬性文件加載測試屬性。 我已經看到了PropertyComponent一些參考,但是我無法得到這個:-(

回答

4

在我們的組織工作,我們從我們的Spring bean配置我們分開彈簧OSGi的配置。

在我們的彈簧OSGi的配置,我們將有以下幾點:

<osgix:cm-properties id="companyProps" persistent-id="com.company.integration"> 
    <prop key="name">value</prop> 
    <prop key="name">value</prop> 
    ... 
</osgix:cm-properties> 

以及任何具體的OSGi的配置(如服務註冊,事件等)

在我們的春天豆配置中,我們定義所有的是

<ctx:property-placeholder location="classpath*:test.properties" /> 
:ANS,我們可以使用一個OSGi容器之外,包括駱駝路由/上下文等

對於我們的測試中,我們使用我們的彈簧bean定義和包含下面的一個試驗彈簧配置啓動一個ClassPathXmlContext

以及我們需要的osgi特定bean的任何模擬。

希望這會有所幫助。

+0

工程就像一個魅力! 謝謝! :) – Brimstedt 2012-04-04 19:38:24

相關問題