Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Mule-用于功能测试的单独测试配置文件或vm端点?_Java_Junit_Mule_Functional Testing_Mule Studio - Fatal编程技术网

Java Mule-用于功能测试的单独测试配置文件或vm端点?

Java Mule-用于功能测试的单独测试配置文件或vm端点?,java,junit,mule,functional-testing,mule-studio,Java,Junit,Mule,Functional Testing,Mule Studio,我已经构建了一段时间的Mule应用程序,并且刚刚开始尝试为我的流编写JUnit测试。我构建的流通常处理平面文件转换,其结构类似于以下内容: <flow> <inbound endpoint> ... DO SOMETHING WITH THE FILE ... <outbound endpoint> </flow> ... 对文件做点什么。。。 我的入站/出站端点是我要部署到的环境中的特定位置,每个流都不同。我的问题是

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

<flow>
   <inbound endpoint>

   ... DO SOMETHING WITH THE FILE ...

   <outbound endpoint>
</flow> 

... 对文件做点什么。。。
我的入站/出站端点是我要部署到的环境中的特定位置,每个流都不同。我的问题是,在编写将文件注入流并检查输出的测试时,最佳实践/方法是什么?使用虚拟机端点创建配置文件的测试副本并将该文件注入其中是否正常?或者使用下面这样的复合源并将文件注入到常规流中更合适吗?对于这个可能是新手的问题,我深表歉意,这是我第一次使用自动化测试

<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>

... 对文件做点什么。。。

Mule有自己的测试框架,基本上不用将类标记为@Test(Junit4),只需扩展FunctionalTestCase(它间接地扩展了JUnit框架)

因此,首先,我建议您阅读本页:

假设您的入站端点是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);
muleClient=muleContext.getClient();
Map props=newhashmap();
put(“http.method”、“GET”);
MuleMessage result=muleClient.send(webaddress,“,props);
assertNotNull(结果);
assertNotNull(result.getPayloadAsString());
assertFalse(result.getPayload()实例为NullPayload);

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

感谢您的回答@Mujahed。实际上,我已经浏览了Mule文档,发现它仅限于一个非常简单的测试用例。在我的场景中,我将使用简单的文件入站端点。我试图理解的是,最好使用一个在这些位置丢弃文件的测试(并配置一个单独的连接器以避免归档测试文件),还是以复合源的形式使用一个不同的端点?谢谢@Andres。我从一个文件夹结构中提取文件,该文件夹结构在我部署到的每个环境中都有镜像,所以我也在本地镜像了这个结构。我想我会继续使用相同的端点,不配置复合源,除非有人反对这个选项。我认为这是一个好的解决方案。然而,我对骡子还没有太多的经验。