THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
Wiki Markup |
---|
h2. Camel Test |
...
As a simple alternative to using [Spring Testing] or [Guice] the *camel-test* module was introduced into the Camel 2.0 trunk so you can perform powerful [Testing] of your [Enterprise Integration Patterns] easily. |
...
h3. Adding to your pom.xml |
...
To get started using Camel Test you will need to add an entry to your pom.xml |
...
{code | ||
:xml | xml | } <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-test</artifactId> <version>${camel-version}</version> <scope>test</scope> </dependency> {code} You might also want to add commons-logging and log4j to ensure nice logging messages (and maybe adding a [log4j.properties|http://svn.apache.org/repos/asf/camel/trunk/components/camel-test/src/test/resources/log4j.properties] file into your src/test/resources directory). |
...
{code | ||
:xml | xml | } <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <scope>test</scope> </dependency> |
Writing your test
You firstly need to derive from the class CamelTestSupport and typically you will need to override the createRouteBuilder() method to create routes to be tested.
Here is an example.
Wiki Markup |
---|
{code} h3. Writing your test You firstly need to derive from the class *CamelTestSupport* and typically you will need to override the *createRouteBuilder()* method to create routes to be tested. Here is an [example|http://svn.apache.org/repos/asf/camel/trunk/components/camel-test/src/test/java/org/apache/camel/test/patterns/FilterTest.java]. {snippet:lang=java|id=example|url=camel/trunk/components/camel-test/src/test/java/org/apache/camel/test/patterns/FilterTest.java} Notice how you can use the various [Camel binding and injection annotations|Bean Integration] to inject individual [Endpoint] objects - particularly the [Mock endpoints|Mock] which are very useful for [Testing]. Also you can inject [producer objects such as ProducerTemplate or some application code interface|POJO Producing] for sending messages or invoking services. h3. |
...
JNDI |
...
Camel uses a [Registry] to allow you to configure [Component] or [Endpoint] instances or [Beans used in your routes|Bean Integration]. If you are not using [Spring] or [OSGi] then [JNDI] is used as the default registry implementation. |
...
So you will also need to create a *jndi.properties* file in your *src/test/resources* directory so that there is a default registry available to initialise the [CamelContext]. |
...
Here is [an example jndi.properties |
...
Code Block |
---|
file|http://svn.apache.org/repos/asf/camel/trunk/components/camel-test/src/test/resources/jndi.properties] {code} java.naming.factory.initial = org.apache.camel.util.jndi.CamelInitialContextFactory |
Dynamically assigning ports
Available as of Camel 2.7
Tests that use port numbers will fail if that port is already on use. AvailablePortFinder
provides methods for finding unused port numbers at runtime.
Code Block |
---|
{code}
h3. Dynamically assigning ports
*Available as of Camel 2.7*
Tests that use port numbers will fail if that port is already on use. {{AvailablePortFinder}} provides methods for finding unused port numbers at runtime.
{code}
// 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);
|
Wiki Markup |
{code} {show-to:user=tjs} {snippet:id=e1|lang=java|url=camel/trunk/components/camel-testmina/src/main/java/org/apache/camel/component/mina/MinaConsumerTest.java} |
See Also
...
{show-to}
h3. See Also
* [Testing]
* [Mock]
|