我正在构建用于在不同系统,服务和API之间同步数据的mule应用程序。
My Mule应用大致如下:
我应该在这里测试什么,
例如,我正在测试我认为是单元测试的数据转换。 我测试的是,如果从用户服务返回(存根)响应,则使用我的表达式正确地丰富了值。我想这会是功能测试吗?
但我应该测试民意调查吗?每个端点被调用?这会是集成测试吗?
答案 0 :(得分:2)
对我来说有用的是确保我以一种允许我仅测试与我的应用程序有关的方式来定义我的软件的“单元”,而不是在我需要重构时可能会改变的方面。在Mule ESB应用程序中,这有时让我只有很少的单元测试,看起来类似于我在java程序中编写的单元测试。我的大多数单元测试都继承自FunctionalTestCase,并且涉及我需要集成的真实系统中的一些进程内测试双精度。
我曾尝试使用Munit来实现这一目标,但有一些设计决策使这种测试方式变得困难。因此,我的单元测试通常继承自FunctionalTestCase。
对于您的应用程序,我可能会创建如下测试:
请注意,我没有明确地测试我的消息在流程中被“丰富”或“转换”,因为这些步骤只是达到目的的手段。如果你决定分两步进行转换,或者使用XSLT而不是java,那么这些测试就不需要改变了。
要使您的HTTP服务的进程内测试加倍,请查看sham-http。
答案 1 :(得分:0)
就测试Mule代码而言,我建议使用三组测试用例。
通过涵盖所有这三类测试用例,我们可以确保Mule服务功能齐全。
要测试的内容始终是每个项目的要求和舒适度。
希望这有帮助。
答案 2 :(得分:0)
我同意这里已经说过,但只是评论。 在单元测试方面,有两件事需要考虑。首先是你的自定义java代码,它应该始终进行单元测试。但您也可以对Mule应用程序进行单元测试。 因为Mule提供了Munit。 Munit是一个测试框架,除其他外,它允许您创建消息处理器的模拟以及对消息处理器的调用的验证。
Munit部分基于org.mule.tck.junit4.FunctionalTestCase
,所以你可以做同样的事情,但你会有更多的功能与Munit。
另请查看可能有用的其他链接 Mule testing best practices and functional vs unit
干杯!