@Before
  public void setUp() throws Exception {
    log.info("********************************************************************************");
    log.info("Testing: " + getTestMethodName() + "(" + getClass().getName() + ")");
    log.info("********************************************************************************");

    log.debug("setUp test");
    if (!useJmx()) {
      disableJMX();
    } else {
      enableJMX();
    }

    context = createCamelContext();
    assertValidContext(context);

    // reduce default shutdown timeout to avoid waiting for 300 seconds
    context.getShutdownStrategy().setTimeout(getShutdownTimeout());

    // set debugger
    context.setDebugger(new DefaultDebugger());
    context.getDebugger().addBreakpoint(breakpoint);
    // note: when stopping CamelContext it will automatic remove the breakpoint

    template = context.createProducerTemplate();
    template.start();
    consumer = context.createConsumerTemplate();
    consumer.start();

    // enable auto mocking if enabled
    String pattern = isMockEndpoints();
    if (pattern != null) {
      context.addRegisterEndpointCallback(new InterceptSendToMockEndpointStrategy(pattern));
    }

    postProcessTest();

    if (isUseRouteBuilder()) {
      RouteBuilder[] builders = createRouteBuilders();
      for (RouteBuilder builder : builders) {
        log.debug("Using created route builder: " + builder);
        context.addRoutes(builder);
      }
      startCamelContext();
      log.debug("Routing Rules are: " + context.getRoutes());
    } else {
      log.debug("Using route builder from the created context: " + context);
    }
    log.debug("Routing Rules are: " + context.getRoutes());
  }