【问题标题】:Mule - separate test config files or vm endpoints for functional testing?Mule - 用于功能测试的单独测试配置文件或 vm 端点?
【发布时间】:2014-05-07 00:19:09
【问题描述】:

我已经构建 Mule 应用程序有一段时间了,并且刚刚开始尝试为我的流程编写 JUnit 测试。我构建的流程通常处理平面文件转换,其结构类似于以下内容:

<flow>
   <inbound endpoint>

   ... DO SOMETHING WITH THE FILE ...

   <outbound endpoint>
</flow> 

我的入站/出站端点是我要部署到的环境中的特定位置,并且因每个流而异。我的问题是编写测试以将文件注入我的流程然后检查输出的最佳实践/方法是什么?使用虚拟、vm 端点创建配置文件的测试副本并将文件注入其中是否正常?还是使用如下所示的复合源并将文件注入常规流是否更合适?对于可能是新手的问题,我深表歉意,这是我第一次使用自动化测试。

<flow>
   <composite source>
      <inbound endpoint>
      <vm endpoint>
   <composite source>

   ... DO SOMETHING WITH THE FILE ...

   <choice>
      <when "file originates from inbound endpoint...">
         <outbound endpoint>
      </when>
      <otherwise>
         <vm endpoint>
      </otherwise>
   </choice>
</flow>

【问题讨论】:

    标签: java junit mule functional-testing mule-studio


    【解决方案1】:

    Mule 有自己的测试框架,基本上,您只需扩展 FunctionalTestCase(间接扩展 JUnit 框架)http://www.mulesoft.org/docs/site/current/apidocs/org/mule/tck/FunctionalTestCase.html

    ,而不是将您的类标记为 @Test (Junit4)

    因此,首先我建议您阅读此页面:http://www.mulesoft.org/documentation/display/current/Functional+Testing

    假设您的入站端点是 http,那么您将使用如下所示的内容,请注意,您可以从父类中使用 muleClient。

        muleClient = muleContext.getClient();
    
        Map<String, Object> props = new HashMap<String, Object>();
        props.put("http.method", "GET");
    
        MuleMessage result = muleClient.send(webaddress, "", props);
    
        assertNotNull(result);
        assertNotNull(result.getPayloadAsString());
        assertFalse(result.getPayload() instanceof NullPayload);
    

    根据需要还有更多的断言。

    【讨论】:

    • 感谢您的回答@Mujahed。我实际上浏览了 Mule 文档,发现它仅限于一个非常简单的测试用例。在我的场景中,我将使用简单的文件入站端点。我想了解的是最好使用将文件放置在这些位置的测试(并配置单独的连接器以避免归档测试文件),还是以复合源的形式完全使用不同的端点?跨度>
    【解决方案2】:

    在您的相同情况下,我为每个环境使用一个属性配置文件。在该环境自定义文件中,我定义了每个入站/出站元素的地址(包括协议)。对于本地环境,我使用文件和目录,对于所有其他环境,我使用真正的协议。这使您可以在本地进行测试,而无需依赖任何服务的可用性。

    【讨论】:

    • 谢谢@Andres。我正在从一个文件夹结构中获取文件,该文件夹结构在我部署到的每个环境中都有镜像 - 所以我也在本地镜像了这个结构。我想我会继续使用相同的端点而不配置复合源,除非有人反对该选项。
    • 我认为这是一个很好的解决方案。但是,我对 Mule 还没有太多经验。
    猜你喜欢
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    • 2018-07-23
    • 1970-01-01
    • 2015-02-21
    • 2021-06-05
    相关资源
    最近更新 更多