org.apache.camel.test.spring
Class CamelSpringTestSupport

java.lang.Object
  extended by org.junit.Assert
      extended by org.apache.camel.test.junit4.TestSupport
          extended by org.apache.camel.test.junit4.CamelTestSupport
              extended by org.apache.camel.test.spring.CamelSpringTestSupport
Direct Known Subclasses:
CamelSpringTestSupport

public abstract class CamelSpringTestSupport
extends org.apache.camel.test.junit4.CamelTestSupport

Version:

Field Summary
protected  org.springframework.context.support.AbstractApplicationContext applicationContext
           
protected static Object lock
           
protected static ThreadLocal<org.springframework.context.support.AbstractApplicationContext> threadAppContext
           
 
Fields inherited from class org.apache.camel.test.junit4.CamelTestSupport
camelContextService, consumer, context, template
 
Fields inherited from class org.apache.camel.test.junit4.TestSupport
log, LS, testName
 
Constructor Summary
CamelSpringTestSupport()
           
 
Method Summary
protected  String[] activeProfiles()
          Which active profiles should be used.
protected abstract  org.springframework.context.support.AbstractApplicationContext createApplicationContext()
           
protected  org.apache.camel.CamelContext createCamelContext()
           
 void doPreSetup()
           
protected  Class<?> excludeRoute()
          Template method used to exclude a Route from the test camel context
protected  Class<?>[] excludeRoutes()
          Template method used to exclude Route from the test time context route scanning
<T> T
getMandatoryBean(Class<T> type, String name)
          Looks up the mandatory spring bean of the given name and type, failing if it is not present or the correct type
protected  org.springframework.context.ApplicationContext getRouteExcludingApplicationContext()
          Create a parent context that initializes a PackageScanClassResolver to exclude a set of given classes from being resolved.
 void postProcessTest()
          Lets post process this test instance to process any Camel annotations.
 void tearDown()
           
static void tearSpringDownAfterClass()
           
 
Methods inherited from class org.apache.camel.test.junit4.CamelTestSupport
applyCamelPostProcessor, assertExpression, assertMockEndpointsSatisfied, assertMockEndpointsSatisfied, assertPredicate, assertResolveLanguage, assertValidContext, camelContextService, consumer, context, createExchangeWithBody, createJndiContext, createRegistry, createRouteBuilder, createRouteBuilders, debugAfter, debugBefore, disableJMX, doPostSetup, enableJMX, getCamelContextService, getMandatoryEndpoint, getMandatoryEndpoint, getMockEndpoint, getMockEndpoint, getShutdownTimeout, ignoreMissingLocationWithPropertiesComponent, isCreateCamelContextPerClass, isLazyLoadingTypeConverter, isMockEndpoints, isMockEndpointsAndSkip, isUseAdviceWith, isUseDebugger, isUseRouteBuilder, replaceRouteFromWith, resetMocks, resolveMandatoryEndpoint, resolveMandatoryEndpoint, sendBodies, sendBody, sendBody, setCamelContextService, setUp, setUseRouteBuilder, startCamelContext, stopCamelContext, tearDownAfterClass, template, useJmx, useOverridePropertiesWithPropertiesComponent
 
Methods inherited from class org.apache.camel.test.junit4.TestSupport
assertCollectionSize, assertCollectionSize, assertDirectoryEquals, assertDirectoryEquals, assertEndpointUri, assertExpression, assertFileExists, assertFileNotExists, assertInMessageBodyEquals, assertInMessageHeader, assertIsInstanceOf, assertListSize, assertListSize, assertMessageHeader, assertOneElement, assertOutMessageBodyEquals, assertOutMessageHeader, assertPredicate, assertPredicateDoesNotMatch, assertPredicateMatches, assertStringContains, body, bodyAs, createDirectory, createExchangeWithBody, deleteDirectory, deleteDirectory, faultBody, faultBodyAs, getRouteList, getTestMethodName, header, isJava15, isJava16, isJava17, isJava18, isJavaVendor, isPlatform, outBody, outBodyAs, property, resolveMandatoryEndpoint, resolveMandatoryEndpoint, systemProperty, systemProperty, unwrap, unwrapChannel
 
Methods inherited from class org.junit.Assert
assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertArrayEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotEquals, assertNotEquals, assertNotEquals, assertNotEquals, assertNotEquals, assertNotEquals, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertThat, assertThat, assertTrue, assertTrue, fail, fail
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

threadAppContext

protected static ThreadLocal<org.springframework.context.support.AbstractApplicationContext> threadAppContext

lock

protected static Object lock

applicationContext

protected org.springframework.context.support.AbstractApplicationContext applicationContext
Constructor Detail

CamelSpringTestSupport

public CamelSpringTestSupport()
Method Detail

createApplicationContext

protected abstract org.springframework.context.support.AbstractApplicationContext createApplicationContext()

postProcessTest

public void postProcessTest()
                     throws Exception
Lets post process this test instance to process any Camel annotations. Note that using Spring Test or Guice is a more powerful approach.

Overrides:
postProcessTest in class org.apache.camel.test.junit4.CamelTestSupport
Throws:
Exception

doPreSetup

public void doPreSetup()
                throws Exception
Overrides:
doPreSetup in class org.apache.camel.test.junit4.CamelTestSupport
Throws:
Exception

tearDown

public void tearDown()
              throws Exception
Overrides:
tearDown in class org.apache.camel.test.junit4.CamelTestSupport
Throws:
Exception

tearSpringDownAfterClass

public static void tearSpringDownAfterClass()
                                     throws Exception
Throws:
Exception

getRouteExcludingApplicationContext

protected org.springframework.context.ApplicationContext getRouteExcludingApplicationContext()
Create a parent context that initializes a PackageScanClassResolver to exclude a set of given classes from being resolved. Typically this is used at test time to exclude certain routes, which might otherwise be just noisy, from being discovered and initialized.

To use this filtering mechanism it is necessary to provide the ApplicationContext returned from here as the parent context to your test context e.g.

 protected AbstractXmlApplicationContext createApplicationContext() {
     return new ClassPathXmlApplicationContext(new String[] {"test-context.xml"}, getRouteExcludingApplicationContext());
 }
 
This will, in turn, call the template methods excludedRoutes and excludedRoute to determine the classes to be excluded from scanning.

Returns:
ApplicationContext a parent ApplicationContext configured to exclude certain classes from package scanning

excludeRoutes

protected Class<?>[] excludeRoutes()
Template method used to exclude Route from the test time context route scanning

Returns:
Class[] the classes to be excluded from test time context route scanning

excludeRoute

protected Class<?> excludeRoute()
Template method used to exclude a Route from the test camel context


getMandatoryBean

public <T> T getMandatoryBean(Class<T> type,
                              String name)
Looks up the mandatory spring bean of the given name and type, failing if it is not present or the correct type


activeProfiles

protected String[] activeProfiles()
Which active profiles should be used.

Important: When using active profiles, then the code in createApplicationContext() should create the Spring AbstractApplicationContext without refreshing. For example creating an ClassPathXmlApplicationContext you would need to pass in false in the refresh parameter, in the constructor. Camel will thrown an IllegalStateException if this is not correct stating this problem. The reason is that we cannot active profiles after a Spring application context has already been refreshed, and is active.

Returns:
an array of active profiles to use, use null to not use any active profiles.

createCamelContext

protected org.apache.camel.CamelContext createCamelContext()
                                                    throws Exception
Overrides:
createCamelContext in class org.apache.camel.test.junit4.CamelTestSupport
Throws:
Exception


Apache Camel