ApacheCamel具有spring DSL和Junit覆盖率

ApacheCamel具有spring DSL和Junit覆盖率,junit,apache-camel,spring-camel,camel-test,Junit,Apache Camel,Spring Camel,Camel Test,我对阿帕奇骆驼是完全陌生的。 我对它有了一些基本的了解 现在,我正在浏览一些视频和文档,以获得一些关于为基于ApacheCamel-spring DSL的spring boot应用程序实现junit测试用例的想法,但我并不清楚,因为有很多方法可以实现或在非常高的级别上实现 我很困惑。。接下来是哪一个,这些少年到底发生了什么 是否有人提供了解释基于ApacheCamel-spring DSL的spring boot应用程序junit覆盖范围的示例、链接或视频 我特别想找年轻人。 另外,如果你认识一

我对阿帕奇骆驼是完全陌生的。 我对它有了一些基本的了解

现在,我正在浏览一些视频和文档,以获得一些关于为基于ApacheCamel-spring DSL的spring boot应用程序实现junit测试用例的想法,但我并不清楚,因为有很多方法可以实现或在非常高的级别上实现

我很困惑。。接下来是哪一个,这些少年到底发生了什么

是否有人提供了解释基于ApacheCamel-spring DSL的spring boot应用程序junit覆盖范围的示例、链接或视频

我特别想找年轻人。
另外,如果你认识一个关于ApacheCamel的好教程,请告诉我。

JUnit和camel与JUnit和普通代码的工作原理不同,据我所知,从JUnit获得camel路由覆盖率的方法还很简单。驼峰路由是一种处理模型,本质上是需要运行的各种步骤的内存模型,所以您不能使用代码覆盖率工具来跟踪执行的部分

在RouteBuilder的子类中考虑此路由:

以及扩展CamelBaseTestSupport的类中的关联测试用例:

当单元测试运行时,应用程序上下文将运行configure方法,因此在我将消息放入队列之前,我已经获得了100%的路由覆盖率!除了我没有,因为它所做的只是在驼峰路由系统中创建执行模型,并且各种组件和处理器现在都将以正确的顺序运行

Bean和处理器将包含在覆盖率报告中,但如果路由中有复杂的逻辑,它将不会为您提供这方面的覆盖率

这项功能大约在2017年提供,但我还没有使用过,也不确定它将如何与您使用的任何覆盖工具配合使用

public void configure() throws Exception { 
  from("jms:queue:zzz_in_document_q")
    .routeId("from_jms_to_processor_to_jms")
    .transacted()
    .log(LoggingLevel.INFO, "step 1/3: ${body}")
    .bean(DocBean.class)
    .log(LoggingLevel.INFO, "step 2/a3 - now I've got this: ${body}")
    .process(new DocProcessor())
    .log(LoggingLevel.INFO, "step 3/3 - and finally I've got this: ${body}")
    .to("jms:queue:zzz_out_document_q");
}
    @Test
    public void testJmsAndDbNoInsert() throws Exception {

        long docCountBefore = count("select * from document");
        template.sendBody("jms:queue:zzz_in_document_q", new Long(100));

        Exchange exchange = consumer.receive("jms:queue:zzz_out_document_q", 5000);
        assertNotNull(exchange);
        Document d = exchange.getIn().getBody(Document.class);
        assertNotNull(d);
        long docCountAfter = count("select * from document");
        assertEquals(docCountAfter, docCountBefore);

    }