Thanks, it did give me some hints.
For anyone else interested, the solution I used was to configure the quartz
component to not start the scheduler automatically as follows.
<bean id="quartz2" class="org.apache.camel.component.quartz2.QuartzComponent">
<property name="autoStartScheduler" value="false"/>
</bean>
In the unit test, inject this component in
@Autowired
private QuartzComponent quartzComponent;
Then during tests, set all expectations first on mocked components as per
normal and then call
quartzComponent.getScheduler().start()
No more race conditions!
On 06/05/2014, at 9:43 PM, Claus Ibsen <[email protected]> wrote:
> On Tue, May 6, 2014 at 1:36 PM, Minh Tran <[email protected]> wrote:
>> No one else unit tests their quartz routes?
>>
>
> Well Camel tests its own components. So maybe take a peak there
> https://github.com/apache/camel/tree/master/components/camel-quartz/src/test
>
>> On 06/05/2014, at 8:51 AM, Minh Tran <[email protected]> wrote:
>>
>>> Hi
>>>
>>> Most of my routes start with either direct or jms. So to test I would use
>>> the @MockEndpoints and set all my expectations then trigger the route using
>>> a ProducerTemplate. But I'm struggling to understand how I can do the same
>>> when it's a quartz component at the start of the route.
>>>
>>> eg
>>>
>>> <from uri="quartz:foo"/>
>>> <to uri="bean:bar"/>
>>>
>>> How do you trigger this from the unit test? I'd like to be able to set all
>>> my expectations before the route gets triggered.
>>
>
>
>
> --
> Claus Ibsen
> -----------------
> Red Hat, Inc.
> Email: [email protected]
> Twitter: davsclaus
> Blog: http://davsclaus.com
> Author of Camel in Action: http://www.manning.com/ibsen
> hawtio: http://hawt.io/
> fabric8: http://fabric8.io/