ifdef::env-github[]
:icon-frown: :frowning:
:icon-smile: :smiley:
endif::[]
ifndef::env-github[]
:icons: font
:icon-frown: icon:frown-o[fw,role=yellow]
:icon-smile: icon:smile-o[fw,role=yellow]
endif::[]

[[Testing-Testing]]
Testing
~~~~~~~

Testing is a crucial activity in any piece of software development or
integration. Typically Camel Riders use various different
link:components.html[technologies] wired together in a variety of
link:enterprise-integration-patterns.html[patterns] with different
link:languages.html[expression languages] together with different forms
of link:bean-integration.html[Bean Integration] and
link:dependency-injection.html[Dependency Injection] so its very easy
for things to go wrong! {icon-frown}. Testing is the crucial weapon to ensure
that things work as you would expect {icon-smile}.

Camel is a Java library so you can easily wire up tests in whatever unit
testing framework you use (JUnit 3.x (deprecated), 4.x, or TestNG).
However the Camel project has tried to make the testing of Camel as easy
and powerful as possible so we have introduced the following features.

[[Testing-Testingmechanisms]]
Testing mechanisms
^^^^^^^^^^^^^^^^^^

The following mechanisms are supported

[width="100%",cols="1,1m,4",options="header",]
|=======================================================================
|Name |Component |Description
|link:camel-test.html[Camel Test] |camel-test |Is a standalone Java
library letting you easily create Camel test cases using a single Java
class for all your configuration and routing without using link:cdi.html[CDI],
link:spring.html[Spring] or link:guice.html[Guice] for
link:dependency-injection.html[Dependency Injection] which does not
require an in-depth knowledge of CDI, Spring + Spring Test or Guice.
Supports JUnit 3.x (deprecated) and JUnit 4.x based tests.

|link:camel-test-cdi.html[CDI Testing] |camel-test-cdi | Provides a JUnit 4
runner that bootstraps a test environment using CDI so that you don't have
to be familiar with any CDI testing frameworks and can concentrate on the
testing logic of your Camel CDI applications. +
Testing frameworks like http://arquillian.org[Arquillian]
or https://ops4j1.jira.com/wiki/display/PAXEXAM4[PAX Exam], can be used
for more advanced test cases, where you need to configure your system under
test in a very fine-grained way or target specific CDI containers.

|link:spring-testing.html[Spring Testing] |camel-test-spring |Supports
JUnit 3.x (deprecated) or JUnit 4.x based tests that bootstrap a test
environment using Spring without needing to be familiar with Spring
Test. The  plain JUnit 3.x/4.x based tests work very similar to the
test support classes in `camel-test`. Also supports Spring Test based
tests that use the declarative style of test configuration and injection
common in Spring Test. The Spring Test based tests provide feature
parity with the plain JUnit 3.x/4.x based testing approach. Notice
`camel-test-spring` is a new component in *Camel 2.10* onwards. For
older Camel release use `camel-test` which has built-in
link:spring-testing.html[Spring Testing].

|link:blueprint-testing.html[Blueprint Testing] |camel-test-blueprint
|*Camel 2.10:* Provides the ability to do unit testing on blueprint
configurations

|link:guice.html[Guice] |camel-guice |Uses link:guice.html[Guice] to
dependency inject your test classes

|Camel TestNG |camel-testng |Supports plain TestNG based tests with or
without link:cdi.html[CDI], link:spring.html[Spring] or link:guice.html[Guice]
for link:dependency-injection.html[Dependency Injection] which does not
require an in-depth knowledge of CDI, Spring + Spring Test or Guice.
Also from *Camel 2.10* onwards, this component supports Spring Test based tests
that use the declarative style of test configuration and injection common
in Spring Test and described in more detail under
link:spring-testing.html[Spring Testing].
|=======================================================================

In all approaches the test classes look pretty much the same in that
they all reuse the link:bean-integration.html[Camel binding and
injection annotations].

[[Testing-CamelTestExample]]
Camel Test Example
++++++++++++++++++

Here is the link:camel-test.html[Camel Test]
link:../../../components/camel-test/src/test/java/org/apache/camel/test/patterns/FilterTest.java[example]:

[source,java]
----
include::../../../components/camel-test/src/test/java/org/apache/camel/test/patterns/FilterTest.java[tags=example]
----

Notice how it derives from the Camel helper class `CamelTestSupport` but
has no CDI, Spring or Guice dependency injection configuration but instead
overrides the `createRouteBuilder()` method.

[[Testing-CdiTestExample]]
CDI Test Example
++++++++++++++++

Here is the link:cdi-testing.html[CDI Testing]
link:../../../components/camel-test-cdi/src/test/java/org/apache/camel/test/cdi/FilterTest.java[example]:

[source,java]
----
include::../../../components/camel-test-cdi/src/test/java/org/apache/camel/test/cdi/FilterTest.java[tags=example]
----

You can find more testing patterns illustrated in the `camel-example-cdi-test` example
and the test classes that come with it.

[[Testing-SpringTestwithXMLConfigExample]]
Spring Test with XML Config Example
+++++++++++++++++++++++++++++++++++

Here is the link:spring-testing.html[Spring Testing]
link:../../../components/camel-spring/src/test/java/org/apache/camel/spring/patterns/FilterTest.java[example
using XML Config]:

[source,java]
----
include::../../../components/camel-spring/src/test/java/org/apache/camel/spring/patterns/FilterTest.java[tags=example]
----

Notice that we use @`DirtiesContext` on the test methods to force
link:spring-testing.html[Spring Testing] to automatically reload the
link:camelcontext.html[`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).

Also notice the use of `@ContextConfiguration` to indicate that by
default we should look for the
link:../../../components/camel-spring/src/test/resources/org/apache/camel/spring/patterns/FilterTest-context.xml[`FilterTest-context.xml`
on the classpath] to configure the test case which looks like this:

[source,xml]
----
include::../../../components/camel-spring/src/test/resources/org/apache/camel/spring/patterns/FilterTest-context.xml[tags=example]
----

[[Testing-SpringTestwithJavaConfigExample]]
Spring Test with Java Config Example
++++++++++++++++++++++++++++++++++++

Here is the link:spring-testing.html[Spring Testing]
link:../../../components/camel-spring-javaconfig/src/test/java/org/apache/camel/spring/javaconfig/patterns/FilterTest.java[example
using Java Config]:

[source,java]
----
include::../../../components/camel-spring-javaconfig/src/test/java/org/apache/camel/spring/javaconfig/patterns/FilterTest.java[tags=example]
----

For more information see link:spring-java-config.html[Spring Java
Config].

This is similar to the XML Config example above except that there is no
XML file and instead the nested `ContextConfig` class does all of the
configuration; so your entire test case is contained in a single Java
class. We currently have to reference by class name this class in the
`@ContextConfiguration` which is a bit ugly. Please vote for
http://jira.springframework.org/browse/SJC-238[SJC-238] to address this
and make Spring Test work more cleanly with Spring JavaConfig.

It's totally optional but for the `ContextConfig` implementation we derive
from `SingleRouteCamelConfiguration` which is a helper Spring Java
Config class which will configure the CamelContext for us and then
register the RouteBuilder we create.

Since *Camel 2.11.0* you can use the `CamelSpringJUnit4ClassRunner` with
`CamelSpringDelegatingTestContextLoader` like
link:../../../components/camel-spring-javaconfig/src/test/java/org/apache/camel/spring/javaconfig/test/CamelSpringDelegatingTestContextLoaderTest.java[example
using Java Config with `CamelSpringJUnit4ClassRunner`]:

[source,java]
----
include::../../../components/camel-spring-javaconfig/src/test/java/org/apache/camel/spring/javaconfig/test/CamelSpringDelegatingTestContextLoaderTest.java[tags=example]
----

[[Testing-SpringTestwithXMLConfigandDeclarativeConfigurationExample]]
Spring Test with XML Config and Declarative Configuration Example
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Here is a Camel test support enhanced link:spring-testing.html[Spring
Testing] link:../../../components/camel-test-spring/src/test/java/org/apache/camel/test/spring/CamelSpringJUnit4ClassRunnerPlainTest.java[example
using XML Config and pure Spring Test based configuration of the Camel
Context]:

[source,java]
----
include::../../../components/camel-test-spring/src/test/java/org/apache/camel/test/spring/CamelSpringJUnit4ClassRunnerPlainTest.java[tags=example]
----

Notice how a custom test runner is used with the `@RunWith` annotation
to support the features of `CamelTestSupport` through annotations on
the test class.  See link:spring-testing.html[Spring Testing] for a list
of annotations you can use in your tests.

[[Testing-BlueprintTest]]
Blueprint Test
++++++++++++++

Here is the link:blueprint-testing.html[Blueprint Testing]
link:../../../components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/DebugBlueprintTest.java[example
using XML Config]:

[source,java]
----
include::../../../components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/DebugBlueprintTest.java[tags=example]
----

Also notice the use of `getBlueprintDescriptors` to indicate that by
default we should look for the
link:camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/camelContext.xml[`camelContext.xml`
in the package] to configure the test case which looks like this:

[source,xml]
----
include::../../../components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/camelContext.xml[tags=example]
----

[[Testing-Testingendpoints]]
Testing endpoints
^^^^^^^^^^^^^^^^^

Camel provides a number of endpoints which can make testing easier.

[width="100%",cols="1,3",options="header",]
|=======================================================================
|Name |Description
|link:dataset.html[DataSet] |For load & soak testing this endpoint
provides a way to create huge numbers of messages for sending to
link:components.html[Components] and asserting that they are consumed
correctly

|link:mock.html[Mock] |For testing routes and mediation rules using
mocks and allowing assertions to be added to an endpoint

|link:test.html[Test] |Creates a link:mock.html[Mock] endpoint which
expects to receive all the message bodies that could be polled from the
given underlying endpoint
|=======================================================================

The main endpoint is the link:mock.html[Mock] endpoint which allows
expectations to be added to different endpoints; you can then run your
tests and assert that your expectations are met at the end.

[[Testing-Stubbingoutphysicaltransporttechnologies]]
Stubbing out physical transport technologies
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

If you wish to test out a route but want to avoid actually using a real
physical transport (for example to unit test a transformation route
rather than performing a full integration test) then the following
endpoints can be useful:

[width="100%",cols="1,3",options="header",]
|=======================================================================
|Name |Description
|link:direct.html[Direct] |Direct invocation of the consumer from the
producer so that single threaded (non-SEDA) in VM invocation is
performed which can be useful to mock out physical transports

|link:seda.html[SEDA] |Delivers messages asynchronously to consumers via
a
http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/BlockingQueue.html[`java.util.concurrent.BlockingQueue`]
which is good for testing asynchronous transports

|link:stub.html[Stub] |Works like link:seda.html[SEDA] but does not
validate the endpoint URI, which makes stubbing much easier.
|=======================================================================

[[Testing-Testingexistingroutes]]
Testing existing routes
^^^^^^^^^^^^^^^^^^^^^^^

Camel provides some features to aid during testing of existing routes
where you cannot or will not use link:mock.html[Mock] etc. For example
you may have a production ready route which you want to test with some
3rd party API which sends messages into this route.

[width="100%",cols="1,3",options="header",]
|=======================================================================
|Name |Description
|link:notifybuilder.html[NotifyBuilder] |Allows you to be notified when
a certain condition has occurred. For example when the route has
completed 5 messages. You can build complex expressions to match your
criteria when to be notified.

|link:advicewith.html[AdviceWith] |Allows you to *advice* or *enhance*
an existing route using a link:routebuilder.html[`RouteBuilder`] style.
For example you can add interceptors to intercept sending outgoing
messages to assert those messages are as expected.
|=======================================================================
