我理解需要测试具有逻辑的类(例如可以计算折扣的类),您可以在其中测试实际的类。我为什么要写一个假类和单元测试呢?
但是我刚开始为一个充当存储库的项目编写单元测试(从数据库获取对象)。我发现自己正在编写一个实现了ISomethingRepository
接口的'假'存储库。它在内部使用Dictionary<Guid, Something>
进行存储。它实现接口的Add(Something)
和GetById(Guid)
方法。
我为什么要写这个?我正在编写的东西实际上会在软件部署时使用,对吧?我真的不明白这个练习的价值。
我也得到了使用模拟对象的建议,我可以提前设置以满足某些期望。这对我来说似乎更加毫无意义:当然,测试会成功,我已经嘲笑/伪装成功!而且我还不能确定实际的软件会连接到数据库时,它应该执行...
迷茫...
有人点我在正确的方向,以帮助我理解这?
谢谢!
我对此表示满意,因为这经常令我感到厌烦。大多数快速的TDD倡导者倾向于意外陷入这种情况,最终导致测试场景/代码在现实中不会发生。 – FlySwat 2009-08-30 22:57:38