Thanks willem. After extending AbstractJUnit4SpringContextTests class it
moving further on the test path


willem.jiang wrote:
> 
> Your application context looks good for me, I just found your test case 
> just extends a wrong class, you need to use 
> AbstractJUnit4SpringContextTests.
> 
> You can find the example here[1]
> [1] 
> https://svn.apache.org/repos/asf/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsResequencerTest.java
> 
> Willem
> 
> gnanda wrote:
>> hi All, I am new to camel and junit test
>> I am trying to create a junit test for my router
>> I am getting below error, where would I specify connectionFactory? please
>> suggest.
>> 
>> 
>> 
>> <testcase time="1.062"
>> classname="com.pf.simplecamelconsumer.SCSRouteTest"
>> name="testValidXml">
>>   <error message="java.lang.IllegalArgumentException: connectionFactory
>> must
>> be specified"
>> type="org.apache.camel.RuntimeCamelException">org.apache.camel.RuntimeCamelException:
>> java.lang.IllegalArgumentException: connectionFactory must be specified
>> at
>> org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1055)
>> at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:100) at
>> org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:98)
>> at
>> org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:111)
>> at
>> org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:329)
>> at
>> com.pf.simplecamelconsumer.SCSRouteTest.testValidXml(SCSRouteTest.java:47)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>> at java.lang.reflect.Method.invoke(Method.java:597) at
>> junit.framework.TestCase.runTest(TestCase.java:168) at
>> junit.framework.TestCase.runBare(TestCase.java:134) at
>> junit.framework.TestResult$1.protect(TestResult.java:110) at
>> junit.framework.TestResult.runProtected(TestResult.java:128) at
>> junit.framework.TestResult.run(TestResult.java:113) at
>> junit.framework.TestCase.run(TestCase.java:124) at
>> junit.framework.TestSuite.runTest(TestSuite.java:232) at
>> junit.framework.TestSuite.run(TestSuite.java:227) at
>> org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:81)
>> at
>> org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
>> at
>> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
>> at
>> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
>> at org.apache.maven.surefire.Surefire.run(Surefire.java:177) at
>> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>> at java.lang.reflect.Method.invoke(Method.java:597) at
>> org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345)
>> at
>> org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009)
>> Caused by: java.lang.IllegalArgumentException: connectionFactory must be
>> specified at
>> org.apache.camel.util.ObjectHelper.notNull(ObjectHelper.java:244) at
>> org.apache.camel.component.jms.JmsConfiguration.createConnectionFactory(JmsConfiguration.java:1172)
>> at
>> org.apache.camel.component.jms.JmsConfiguration.getConnectionFactory(JmsConfiguration.java:521)
>> at
>> org.apache.camel.component.jms.JmsConfiguration.createTemplateConnectionFactory(JmsConfiguration.java:1189)
>> at
>> org.apache.camel.component.jms.JmsConfiguration.getTemplateConnectionFactory(JmsConfiguration.java:558)
>> at
>> org.apache.camel.component.jms.JmsConfiguration.createInOnlyTemplate(JmsConfiguration.java:459)
>> at
>> org.apache.camel.component.jms.JmsEndpoint.createInOnlyTemplate(JmsEndpoint.java:195)
>> at
>> org.apache.camel.component.jms.JmsProducer.getInOnlyTemplate(JmsProducer.java:401)
>> at
>> org.apache.camel.component.jms.JmsProducer.doSend(JmsProducer.java:343)
>> at
>> org.apache.camel.component.jms.JmsProducer.processInOnly(JmsProducer.java:320)
>> at
>> org.apache.camel.component.jms.JmsProducer.process(JmsProducer.java:150)
>> at
>> org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:179)
>> at
>> org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:161)
>> at
>> org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:146)
>> at
>> org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:160)
>> at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:98) ... 27
>> more</error> 
>> here is my camel context file named SCSRouteTest-context.xml
>> located under test/resources/com/pf/simplecamelconsumer
>> <beans xmlns="http://www.springframework.org/schema/beans";
>>      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>>      xsi:schemaLocation="
>>        http://www.springframework.org/schema/beans
>> http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
>>        http://camel.apache.org/schema/spring
>>  http://camel.apache.org/schema/spring/camel-spring.xsd
>>  
>>     ">
>> 
>>      <!--
>>      from("seda:a").to("seda:b");
>>   -->
>> 
>>      <bean id="jms" class="org.apache.camel.component.jms.JmsComponent">
>>              <property name="configuration" ref="jmsConfig" />
>> 
>>      </bean>
>>      <bean id="jmsConnectionFactory"
>> class="org.apache.activemq.ActiveMQConnectionFactory">
>>              <property name="brokerURL" value="tcp://LPF004689:61616" />
>>              <property name="redeliveryPolicy" ref="redeliveryPolicy" />
>>              <!--
>>                      <property name="transactionManager" 
>> ref="jmsTransactionManager" />
>>                      <property name="transacted" value="true" />
>>              -->
>>      </bean>
>>      <bean id="redeliveryPolicy"
>> class="org.apache.activemq.RedeliveryPolicy">
>>              <property name="maximumRedeliveries" value="1" />
>>      </bean>
>>      <bean id="jmsConfig"
>> class="org.apache.camel.component.jms.JmsConfiguration">
>>              <property name="connectionFactory" ref="jmsConnectionFactory" />
>>              <property name="concurrentConsumers" value="5" />
>>              <property name="transactionManager" ref="jmsTransactionManager" 
>> />
>>              <property name="transacted" value="true" />
>>              <property name="deliveryPersistent" value="true"/>
>>      <!--    <property name="explicitQosEnabled" value="true"/> TODO check 
>> -->
>>      </bean>
>> 
>>      <bean id="jmsTransactionManager"
>>              
>> class="org.springframework.jms.connection.JmsTransactionManager">
>>              <property name="connectionFactory" ref="jmsConnectionFactory" />
>>      </bean>
>>      <bean id="PROPAGATION_REQUIRED"
>> class="org.apache.camel.spring.spi.SpringTransactionPolicy">
>>              <property name="transactionManager" ref="jmsTransactionManager" 
>> />
>>              <property name="propagationBehaviorName" 
>> value="PROPAGATION_REQUIRED"
>> />
>>      </bean>
>>      <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring";
>>              trace="true">
>>              <package>com.pf.simplecamelconsumer</package>
>> 
>> 
>>      </camelContext>
>> </beans>
>>      <!--
>> here is my junit test code
>> 
>> package com.pf.simplecamelconsumer;
>> 
>> import java.io.IOException;
>> import java.io.InputStream;
>> import java.util.List;
>> 
>> import org.apache.camel.EndpointInject;
>> import org.apache.camel.Exchange;
>> import org.apache.camel.ProducerTemplate;
>> import org.apache.camel.component.mock.MockEndpoint;
>> import org.apache.camel.test.CamelTestSupport;
>> import org.apache.camel.Produce;
>> import org.springframework.test.annotation.DirtiesContext;
>> import org.junit.Test;
>> import org.springframework.test.context.ContextConfiguration;
>> import org.springframework.beans.factory.annotation.Autowired;
>> import org.apache.camel.CamelContext;
>> 
>> import org.apache.commons.io.IOUtils;
>> 
>> //This test will load a Spring XML configuration file called
>> MyCamelTest-context.xml from the classpath in the same package structure
>> as
>> the MyCamelTest class and initialize it along with any Camel routes we
>> define inside it, then inject the CamelContext instance into our test
>> case.
>> @ContextConfiguration
>> public class SCSRouteTest extends CamelTestSupport {
>>      @Autowired
>>      protected CamelContext camelContext;
>> 
>>      @EndpointInject(uri = "mock:result")
>>      protected MockEndpoint resultEndpoint;
>> 
>>      @Produce(uri = "jms:queue:trust01")
>>      protected ProducerTemplate template;
>> 
>>      /*
>>       * @DirtiesContext on the test methods to force Spring Testing to
>>       * automatically reload the CamelContext after each test method - this
>>       * ensures that the tests
>>       * 
>>       * don't clash with each other (e.g. one test method sending to an
>> endpoint
>>       * that is then reused in another test method).
>>       */
>>      @Test
>>      @DirtiesContext
>>      public void testValidXml() throws Exception {
>>              String expectedBody = getSampleGoodMessages();
>>              this.resultEndpoint.expectedMessageCount(1);
>> 
>>              this.template.sendBody(this.getSampleGoodMessages());
>>              resultEndpoint.expectedBodiesReceived(expectedBody);
>> 
>>              resultEndpoint.expectedHeaderReceived("content-type",
>>                              "application/soap+xml;charset=UTF-8");
>>              resultEndpoint
>>                              .expectedHeaderReceived("content-type", 
>> this.getHTTPURI());
>>              this.resultEndpoint.assertIsSatisfied(10000);
>> 
>>              resultEndpoint.assertIsSatisfied();
>>              ;
>>      }
>> 
>>      private String getHTTPURI() throws IOException {
>>              final InputStream iStream = this.getClass().getResourceAsStream(
>>                              "/header.txt");
>>              return IOUtils.toString(iStream);
>>      }
>> 
>>      private String getSampleGoodMessages() throws IOException {
>>              final InputStream iStream = this.getClass().getResourceAsStream(
>>                              "/sampleMessages.xml");
>>              return IOUtils.toString(iStream);
>>      }
>> 
>>      private String getSampleBadXML() throws IOException {
>>              final InputStream iStream = this.getClass().getResourceAsStream(
>>                              "/sampleBadXml.xml");
>>              return IOUtils.toString(iStream);
>>      }
>> 
>> }
>> 
> 
> 
> 

-- 
View this message in context: 
http://old.nabble.com/camel-junit-test-tp28490816p28512270.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to