0

所以,我对 C# 和 .NET 中的单元测试和模拟都相当陌生;我分别使用 xUnit.net 和 Rhino Mocks。我是一个皈依者,我想我专注于编写行为规范,而不是纯粹的 TDD。呸,语义;本质上,我想要一个自动安全网在上面工作。

一个想法让我印象深刻。我得到了针对接口的编程,而分解依赖项的好处就在那里。卖。但是,在我的行为验证套件(又名单元测试;-))中,我一次断言一个接口的行为。就像一次一个接口的实现一样,它的所有依赖项都被模拟出来并建立了期望。

这种方法似乎是,如果我们验证一个类的行为与它的协作依赖项一样,并且反过来依赖于每个协作依赖项来签署相同的质量合同,那么我们就很成功了。似乎足够合理。

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

4

2 回答 2

0

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

没有单元测试法则规定您需要单独测试每个类。但是,为了可维护,您真正希望测试只需要在它们测试的行为发生变化时发生变化。以这种方式来看,使用具体版本的密切合作者和假货用于更远的合作者通常是合理的。

我绝对使用一种或另一种假货的一个地方是遵循 Michael Feather 的单元测试规则

于 2008-11-15T18:04:59.180 回答
0

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

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

于 2009-07-15T07:15:59.550 回答