你在哪里采取嘲弄 - 直接依赖,或者你是否扩大了界限......?

时间:2008-11-15 17:02:48

标签: unit-testing mocking integration-testing

所以,我对C#和.NET中的单元测试和模拟都很陌生;我分别使用xUnit.net和Rhino Mocks。我是一名皈依者,而且我专注于编写行为规范,我猜,而不是纯粹的TDD。呸,语义学;我希望自动化安全网能够在上面工作。

然而,一个想法让我感到震惊。我接受了针对接口的编程,并且就拆分依赖关系而言,其优势就在那里。出售。但是,在我的行为验证套件(又称单元测试;-))中,我一次断言一个界面的行为。就像在,一次一个接口的一个实现,其所有依赖项被嘲笑并设置了期望。

这种方法似乎是,如果我们验证一个类的行为与它的协作依赖关系相应,并依次依赖于每个协作依赖关系来签署相同的质量合同,那么我们就是金色的。似乎足够合理。

回到思想中。半集成测试中是否存在任何值,其中测试夹具针对连接在一起的具体实现单元进行断言,并且我们正在测试其针对模拟依赖项的内部行为?我只是重新阅读,我想我可能会更好地措辞。显然,如果它为你增加价值,继续这样做会有一定的“好吧”,我想 - 但是还有其他人想过这样做,并从中获得的收益超过了成本吗?

2 个答案:

答案 0 :(得分:0)

您的问题已经讨论多年,也可以改为“什么是单位”?

没有单元测试法则说您需要单独测试每个类。但是,为了维护,您真正想要的测试只需要在测试行为发生变化时进行更改。以这种方式看待它通常是合理的使用紧密合作者的具体版本和伪造更远的合作者。

我绝对使用这种或那种假货的地方是跟随Michael Feather的Rules of Unit Testing

答案 1 :(得分:0)

我没有看到集成测试中的价值只是将完全可单元测试的内部类链接在一起。

在我看来,集成测试的价值在于它触及平台或外部接口,即无法进行单元测试的合同。