可能重复:
模拟对象的目的是什么?
我正在准备一个演示文稿,我需要更好地了解模拟是什么,使用它的目的是什么,我应该使用模拟对象的常见情况是什么?我发现那里有一堆模拟框架.他们都做同样的事情,还是使用特定的框架进行特定的测试?这些框架之间有什么区别?你会推荐哪一个用于测试Java?
这里有一些我发现的东西:
1. MockingToolkitComparisonMatrix似乎有偏见.
2. Java中的模拟对象是什么?这是一岁.我想今天可能会有更好的答案.
谢谢.
模拟的目的是允许您单独测试应用程序组件.例如,如果您有一个使用DAO的服务,您希望能够在不必通过DAO转到数据库的情况下测试您的服务.你会
1)
单独测试DAO ,2)在服务测试中模拟DAO,这样您的服务就可以单独测试.
由于您的DAO具有明确定义的API,因此您的模拟DAO会模拟该API.因此,如果您有一个findAll服务调用的类型方法,您可以轻松地模拟DAO以期望调用findAll并返回适当的结果.
所有模拟框架的目的都是相同的 - 允许您设置期望并断言在测试中满足这些期望.但是,框架之间的细节是不同的.我在实际工作环境中使用过EasyMock,并与Mockito一起玩回答关于SO的几个问题.两者都很不错.进入成本相当低 - 这个想法始终是设定期望,让模拟返回结果,然后验证期望是否得到满足.您可能需要花一天或两天才能理解您的模拟框架,但在此之后您应该能够高效工作并找出您不知道的内容.
在良好的封装设计中,无论其依赖项的实现类如何,类都应该表现相同.Mocking允许您隔离您的实现代码,以便您可以检查它将如何独立于更多不稳定的构造(如数据库和文件系统)以确保确定性结果的方式做出反应.
| 归档时间: |
|
| 查看次数: |
4194 次 |
| 最近记录: |