Как установить значения свойств во время тестирования для тестов на основе CamelSpringTestSupport - PullRequest
2 голосов
/ 03 апреля 2012

Я создаю модуль 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-properties из файла свойств.Я видел некоторые ссылки на PropertyComponent, но я не могу заставить это работать: - (

1 Ответ

4 голосов
/ 04 апреля 2012

В нашей организации мы отделяем нашу конфигурацию spring-osgi от нашей конфигурации spring 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" />

, а также любые макеты, которые нам нужны для osgiконкретные бобы.

Надеюсь, это поможет.

...