Как установить значения свойств во время тестирования для тестов на основе CamelSpringTestSupport
Я создаю модуль ServiceMix, который состоит из маршрута Camel.
В моем файле 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 id="myConfig" class="com.company.integration.MyConfig">
<osgix:managed-properties persistent-id="com.company.integration" />
</bean>
Проблема в том, когда я пишу свои юнит-тесты. В настоящее время я использую копию файла 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 и предпочтительно загрузить свойства test из файла свойств. Я видел некоторые ссылки на PropertyComponent, но я не могу заставить это работать:-(
1 ответ
В нашей организации мы отделяем нашу конфигурацию spring-osgi от нашей конфигурации bean-компонента.
В нашей конфигурации spring-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 конфигурации (такие как регистрация службы, события и т. д.)
В нашей конфигурации Spring-bean мы определяем все bean-компоненты, которые мы МОЖЕМ использовать вне контейнера osgi, включая маршруты / контекст верблюдов и т. Д.
Для нашего тестирования мы запускаем ClassPathXmlContext, используя наше определение пружинного компонента и конфигурацию тестовой пружины, которая содержит следующее:
<ctx:property-placeholder location="classpath*:test.properties" />
Как и любые насмешки, которые нам нужны для конкретных бобов.
Надеюсь это поможет.