我很好奇你们中有多少人将模拟对象(像JMock,NMock,RhinoMocks这样的框架与单元测试框架一起)整合到你的日常开发过程中.你有什么经历?
你看,我是在GIS(地理信息系统)平台上开发的,其中大部分工作都与某种处理数据的方式有关.由于它的数据对象模型非常复杂(许多类和接口,都是基于COM的),因此模拟也非常困难和繁琐.在这种情况下,模拟会在编写测试套件时产生大量开销.我想知道是否有类似情况的人,或者只是,嘲笑(无论你在哪种情况下)如何为你工作.
在我最近开展的一个项目中,我们在单元测试方法中广泛使用了模拟对象.该项目是100%Java和中等大小(大约100,000行非注释代码).它是一个基于Swing的桌面应用程序 - 我们发现测试用户界面逻辑的唯一有效方法是通过MVC变体设计,允许我们使用模拟对象来代替实际的Swing用户界面类进行自动化测试.我们还在测试数据访问层(Hibernate/DAO)时广泛使用了模拟.
在用户界面使用中,Mocks易于构建且简单易行.而应用程序的设计(Fowler Passive View)很容易融入模拟.对于用于测试数据访问层的模拟,情况并非如此.但我可以说这显然值得付出努力.实际上,大多数"努力"都专注于提出一种可重用的解决方案,该解决方案最大限度地减少了开发人员为创建每个模拟而必须完成的工作.我建议花时间深入挖掘并发现适合您情况的方法,以便您轻松模拟GIS数据层.那 - 或者只是手动模拟每个班级.无论哪种方式,运行依赖于模拟的自动化单元测试的能力是值得的......