当前位置: 首页 > 知识库问答 >
问题:

apachecamelbeans单元测试

江天宇
2023-03-14

我在我的应用程序中使用带Spring boot的Apache Camel。目前我正在进行单元测试。

Java代码

>

  • DataRoute类

    from("direct:getData")
    .routeId("getData")
    .bean(DataService.class, "processData")
    .marshal().json(JsonLibrary.Jackson)
    .end();
    

    DataService类

    public Data processData() {
        return new Data("Hello World");
    }
    

    带有getter、setter和Jackson-toString方法的数据类

    private String value;
    

    单元测试

    >

  • BaseCamelContextUnitText

    public abstract class BaseCamelContextUnitTest extends CamelTestSupport
    {
         @Autowired
         private DataService dataService;
    
         @Produce
         private ProducerTemplate producerTemplate;
    
         public CamelContext getCamelContext() {
             return camelContext;
         } 
    
         @Override
         protected Context createJndiContext() throws Exception {
             JndiContext context = new JndiContext();
             context.bind("dataService", dataService);
             return context;
         }
    
         @Test
         public void shouldProcessData() throws Exception {
              RouteDefinition routeDef = getCamelContext().getRouteDefinition("getData");
              routeDef.adviceWith((ModelCamelContext) getCamelContext(), new RouteBuilder() {
    
                 @Override
                 public void configure() throws Exception {
                      from("direct:getData")
                        .pipeline("bean:dataService?method=processData");
                 }
         });
    
         getCamelContext().start();
    
         String responseData = "{"
            + "\"value\":\"Unit test success\""
            + "}";
    
         Object response = producerTemplate.sendBody("direct:getData",   ExchangePattern.InOut, null);
    
         ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    ((InputStreamCache) response).writeTo(byteArrayOutputStream);
    
         assertThat(new String(byteArrayOutputStream.toByteArray()), is(responseData));
         }
      }
    

    我怎么嘲弄

       .bean(DataService.class, "processData")
    

    在单元测试中,返回一个模拟数据对象,其默认字符串变量为“unit test success”,然后测试路由是否会返回模拟对象,而不是带有“Hello World”字符串变量的对象?

  • 共有1个答案

    龙玄天
    2023-03-14

    您可以在您的DataRoute中自动安装DataService,例如

    @Component
    public class DataRoute extends RouteBuilder {
    
        @Autowired
        private DataService dataService;
    
        @Override
        public void configure() throws Exception {
            from("direct:getData")
            .routeId("getData")
            .bean(dataService, "processData")
            .marshal().json(JsonLibrary.Jackson)
            .end();
        }
    
    }
    

    因此,您可以像往常一样模拟DataService

    另一种方法是在路由中使用beanRef(“beanName”、“methodName”)

     类似资料:
    • 单元测试涉及测试软件应用程序的每个单元或单个组件。这是第一级软件测试。单元测试的目的是验证单元组件的性能。 单元是软件系统的单个可测试部分,并在应用程序软件的开发阶段进行测试。 此测试旨在测试隔离代码的正确性。单元组件是应用程序的单独功能或代码。白盒测试方法用于单元测试,通常由开发人员完成。 在测试级别层次结构中,单元测试是在集成和其他剩余测试级别之前完成的第一级测试。它使用模块进行测试,减少了等

    • 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如 C 语言中单元指一个函数,Java 里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进

    • 我们从 Hello World 项目入手,增加单元测试功能。 我们新家了一个名为hello-world-test的 Gradle 项目。 环境 Gradle 3.4.1 Spring Boot 1.5.2.RELEASE Thymeleaf 3.0.3.RELEASE Thymeleaf Layout Dialect 2.2.0 Spring Security Test 4.2.2.RELEASE

    • 单元测试验证单个代码单元是否按预期工作。 也就是说,给定不同的输入参数, 测试验证类方法返回预期结果。 单元测试通常由编写待测试类的人开发。 Yii的单元测试框架 Codeception 基于 PHPUnit,Codeception 建议遵从 PHPUnit 的文档的进行开发: Codeception for Yii framework Codeception Unit Tests PHPUnit

    • 单元测试 ClojureScript 的测试和 Clojure 语法类似, 通过 cljs.test 来提供. 首先需要引用下面这些函数或者 Macros: (ns my-project.tests (:require [cljs.test :refer-macros [deftest is testing run-tests]])) 然后可以定义一个测试: (deftest test-num

    • Mpx 会生成源码与最终产物包的映射关系,结合微信小程序提供的 miniprogram-simulate 来进行单元测试的工作。 因为目前仅微信提供了仿真工具,暂时只支持微信小程序平台的单元测试。如果需要 E2E 测试,则和框架无关了,可参考微信的小程序自动化。 简单的断言 组件必须是被项目真实使用的,且经过一次构建才可被测试。构建时 MpxPlugin 的配置信息中要将 generateBuil