Testing 我应该在什么时候通过手动创建一个";存根“;版本,而不是使用模拟框架

Testing 我应该在什么时候通过手动创建一个";存根“;版本,而不是使用模拟框架,testing,mocking,stubs,Testing,Mocking,Stubs,与在测试点使用模拟框架(如Rhino Mocks)相比,是否存在有利于手动创建存根类型的情况 我们在项目中采用这两种方法。当我看到一长串存根版本的对象时,我的直觉是它会增加维护开销,并将存根的实现从测试点移开。当存根占用太多维护时间时,是时候转向存根/模拟框架了。所以我想你自己已经给出了答案 目前,为了简单起见,我仍然在当前项目中使用存根。我使用存根的类型只有少数几种,通常只有一个存根,有时两个存根用于重新创建错误,但没有更多。为了自动单元测试的目的,模拟几乎总是更好的选择。因为它们使用反射来模

与在测试点使用模拟框架(如Rhino Mocks)相比,是否存在有利于手动创建存根类型的情况


我们在项目中采用这两种方法。当我看到一长串存根版本的对象时,我的直觉是它会增加维护开销,并将存根的实现从测试点移开。

当存根占用太多维护时间时,是时候转向存根/模拟框架了。所以我想你自己已经给出了答案


目前,为了简单起见,我仍然在当前项目中使用存根。我使用存根的类型只有少数几种,通常只有一个存根,有时两个存根用于重新创建错误,但没有更多。

为了自动单元测试的目的,模拟几乎总是更好的选择。因为它们使用反射来模拟对象,所以当您进行更改时,它们将保持最新状态

我创建存根的唯一时间是为了集成测试——例如,您可以存根一个SMS发送服务,这样您就可以运行一段时间的集成/用户测试,而不必为发送SMS消息而付费(相反,这些消息是存储的,以便可以检查它们)。

您可能想阅读xUnit测试模式一书