Проблемы тестирования верблюда с конфигурацией Spring - PullRequest
3 голосов
/ 28 марта 2011

У меня есть маршруты, определенные в CamelRoutes.xml, и я хотел бы проверить их, используя технику упаковки, описанную в нижней части http://camel.apache.org/mock.html.

My CamelRoutes.xml

 <route autoStartup="true"  xmlns="http://camel.apache.org/schema/spring">
        <from uri="direct:start"/>
        <to uri="direct:end"/>
    </route>

Итак, я создал CamelRoutesTest.xml, содержащий:

<import resource="CamelRoutes.xml"/>
<bean id="mockAllEndpoints" class="org.apache.camel.impl.InterceptSendToMockEndpointStrategy"/>

, но я не уверен, как создать тест, который одновременно загружает xml пружины и обеспечивает доступ к фиктивным конечным точкам.

Если яиспользуйте ..

@ContextConfiguration( locations=("/CamelRoutesTest"))
public class CamelTest extends AbstractJUnit38SpringContextTests

}

тогда я понятия не имею, как получить фиктивные конечные точки

Если я использую ..

public class CamelTest extends CamelTestSupport

}

тогдаЯ не знаю, как загрузить свой верблюжий контекст.

Не могу найти пример теста на веб-сайте, который использует CamelTestSupport И загружает маршруты из Spring XML.

Ответы [ 3 ]

3 голосов
/ 05 июля 2011

Решено с помощью:

public class CamelTest extends CamelSpringTestSupport {  

    @Override
    protected AbstractXmlApplicationContext createApplicationContext() {
        return new ClassPathXmlApplicationContext("/CamelRoutesTest.xml");
    }

    @Test
    @DirtiesContext
    public void discover() throws Exception {

        getMockEndpoint("mock:my.route.out").expectedMessageCount(1);

        template.sendBody("direct:my.route.in", FileUtils.slurpClassPathFile("/samples/sample.data.xml"));

        assertMockEndpointsSatisfied();

    }


}
3 голосов
/ 28 марта 2011

Том, вы уже опубликовали это в списке рассылки Camel. Я предлагаю вам написать это, когда вы отправляете Q здесь.

Ответ уже выложен здесь http://camel.465427.n5.nabble.com/Problems-testing-Camel-with-Spring-config-tp4267754p4267754.html

2 голосов
/ 25 мая 2012

Спасибо за это решение, @Tom!

Мне также было трудно заставить Camel работать с моими тестами JUnit на базе Spring, проблема в том, что предлагаемый CamelSpringJUnit4ClassRunner теперь перемещен из camel-spring.jar вотдельный модуль, camel-spring-test.jar, который недоступен в стандартном Camel-дистрибутиве с 2.9.2.

Поэтому я не могу использовать @RunWith, но вынужден был прибегнуть к ручному методу, описанному врешение ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...