在任何情况下,手动创建存根类型而不是在测试点使用模拟框架(例如 Rhino Mocks)是有利的。
我们在项目中采用这两种方法。当我查看一长串对象的存根版本时,我的直觉是它会增加维护开销,并将存根的实现从测试点移开。
当您达到存根占用太多维护时间的地步时,就该转向存根/模拟框架了。所以我想你自己已经给出了答案。
目前,为了简单起见,我仍在对当前项目使用存根。我使用存根的类型只有几种,通常只有一个存根,有时两个用于重新创建错误,但没有更多。
出于自动化单元测试的目的,模拟几乎总是更好的选择。因为它们使用反射来模拟对象,所以当您进行更改时它们将保持最新状态。
我创建存根的唯一一次是用于集成测试 - 例如,您可以存根 SMS 发送服务,这样您就可以运行一段时间的集成/用户测试,而无需为发送 SMS 消息而付费(相反,消息被存储以便它们可以检查)。