...
You firstly need to derive from the class CamelTestSupport (org.apache.camel.test.CamelTestSupport, org.apache.camel.test.junit4.CamelTestSupport, or org.apache.camel.testng.CamelTestSupport for JUnit 3.x, JUnit 4.x, and TestNG, respectively) and typically you will need to override the createRouteBuilder() or createRouteBuilders() method method to create routes to be tested.
...
Notice how you can use the various Camel binding and injection annotations to inject individual Endpoint objects - particularly the Mock endpoints which are very useful for Testing. Also you can inject producer objects such as ProducerTemplate or some application code interface for sending messages or invoking services.
Features Provided by CamelTestSupport
The various CamelTestSupport classes provide a standard set of behaviors relating to the CamelContext used to host the route(s) under test. The classes provide a number of methods that allow a test to alter the configuration of the CamelContext used. The following table describes the available customization methods and the default behavior of tests that are built from a CamelTestSupport class.
Method Name | Description | Default Behavior | ||
---|---|---|---|---|
boolean isUseRouteBuilder() | If the route builders from returned from createRouteBuilder() or createRouteBuilders() should be added to the CamelContext used in the test should be started. | Returns true. createRouteBuilder() or createRouteBuilders() are invoked and the CamelContext is started automatically. | ||
boolean isUseAdviceWith() | If the CamelContext use in the test should be automatically started before test methods are invoked.
| Returns false. the CamelContext is started automatically before test methods are invoked. | ||
boolean isCreateCamelContextPerClass() | See Setup CamelContext once per class, or per every test method. | The CamelContext and routes are recreated for each test method. | ||
String isMockEndpoints() | Triggers the auto-mocking of endpoints whose URIs match the provided filter. The default filter is null which disables this feature. Return "*" to match all endpoints. See org.apache.camel.impl.InterceptSendToMockEndpointStrategy for more details on the registration of the mock endpoints. | Disabled | ||
boolean isUseDebugger() | If this method returns true, the debugBefore(Exchange exchange, Processor processor, ProcessorDefinition<?> definition, String id, String label) and | Disabled. The methods are not invoked during the test. | ||
int getShutdownTimeout() | Returns the number of seconds that Camel should wait for graceful shutdown. Useful for decreasing test times when a message is still in flight at the end of the test. | Returns 10 seconds. | ||
boolean useJmx() | If JMX should be disabled on the CamelContext used in the test. | JMX is disabled. | ||
JndiRegistry createRegistry() | Provides a hook for adding objects into the registry. Override this method to bind objects to the registry before test methods are invoked. | An empty registry is initialized. |
JNDI
Camel uses a Registry to allow you to configure Component or Endpoint instances or Beans used in your routes. If you are not using Spring or OSGi then JNDI is used as the default registry implementation.
...
Code Block |
---|
// Get the next available port number starting from the default starting port of 1024
int port1 = AvailablePortFinder.getNextAvailable();
/*
* Get another port. Note that just getting a port number does not reserve it so
* we look starting one past the last port number we got.
*/
int port2 = AvailablePortFinder.getNextAvailable(port1 + 1);
|
...