2011-03-28 3 views
3

J'ai un itinéraire défini en CamelRoutes.xml et je voudrais les tester en utilisant la technique d'emballage décrite au bas de http://camel.apache.org/mock.html.Problèmes de test Camel avec Spring config

Mon CamelRoutes.xml

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

Je créé CamelRoutesTest.xml contenant:

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

mais je ne suis pas sûr de savoir comment créer un test que les deux charges xml printemps et permet d'accéder aux points d'extrémité simulacres.

Si je ..

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

} 

alors je ne sais pas comment obtenir les points d'extrémité simulacres

Si je ..

public class CamelTest extends CamelTestSupport 

} 

alors je ne sais pas comment pour charger mon contexte de chameau ..

Je n'arrive pas à trouver un examp le test sur le site web qui utilise CamelTestSupport ET charge des routes à partir du printemps xml.

Répondre

3

Résolu en utilisant:

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

Tom vous l'avez déjà posté sur la liste de diffusion Camel. Je suggère que vous écrivez ceci quand vous postez un Q ici aussi.

La réponse est déjà posté ici http://camel.465427.n5.nabble.com/Problems-testing-Camel-with-Spring-config-tp4267754p4267754.html

+0

mettre à jour normalement ma question ici si/quand je reçois une réponse ailleurs. Pour l'instant, je manque encore d'un exemple décent de comment maquiller correctement mon itinéraire afin que mes tests ne touchent pas les systèmes externes. – Tom

2

Merci pour cette solution, @ Tom!

J'ai également eu du mal à faire fonctionner Camel avec mes tests JUnit à ressorts, le problème est que le CamelSpringJUnit4ClassRunner suggéré est maintenant déplacé de camel-spring.jar dans un module séparé, camel-spring-test.jar, qui n'est pas disponible dans la distribution standard camel à partir de 2.9.2.

donc je ne peux pas utiliser @RunWith mais a dû recourir à la méthode manuelle décrite dans la solution ...