2012-04-03 39 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

相关问题