java - 测试 Camel quartz 路线

标签 java spring testing apache-camel quartz

我尝试对 apache Camel 路线进行 junit 测试。 像这样:

@RunWith(CamelSpringJUnit4ClassRunner.class)
@ContextConfiguration(
    loader = CamelSpringDelegatingTestContextLoader.class
)
public class MyExportRouteBuilderIT extends CamelTestSupport {
    @Test
    public void test() {
        // trigger and check the files made by route builder processor
    }

    @Override
    protected RouteBuilder createRouteBuilder() throws Exception {
        return new MyExportRouteBuilder();
    }
}

构建器类是这样定义的

from("quartz2://exportJob?cron=" + cronTrigger)
.setHeader(FILE_NAME, expression(FILE_NAME_FORMAT))
.process(myExportRouteProcessor)
.marshal(new BindyCsvDataFormat(MyExportData.class))
.to("file:///destination);

“myExportRouteProcessor”类只是从 JPA 存储库中获取一些数据并将结果放入路由。 我想要的是在测试类中触发这个路由来检查整个过程是否正确完成。 当前,处理器未被解雇。我还应该做什么?

最佳答案

您可以直接使用 AdviceWithRouteBuilder#replaceFromWith 替换测试中的 quartz2 组件.

@Test
public void test() throws Exception{
   //mock input route (replace quartz with direct)
   context.getRouteDefinitions().get(0).adviceWith(context, new AdviceWithRouteBuilder() {
       @Override
       public void configure() throws Exception {
           replaceFromWith("direct:triggerQuartz");
       }
   });

   //trigger endpoint
   sendBody("direct:triggerQuartz", null);

   //do some assertions
}    

关于java - 测试 Camel quartz 路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47759037/

相关文章:

java - 使数据库确定性地失败以进行测试

java - 如何禁用 karaf-maven-plugin 4 严格依赖约束检查

java - 朴素贝叶斯分类器 LongWritable 异常

Java:颜色运算(加、减)? - 恒定类别的颜色

java - 如何配置 Spring-WS 以使用 JAXB Marshaller?

spring - 在已安装并运行 Tomcat 时使用 Spring Framework Web

java - 支柱2 : Displays table of Songs - null gets printed

java - Jpa 通过字段子项获取父项

java - dbunit 性能最佳实践

java - 如何从 JMockit 模拟静态方法