为什么我们在单元测试中为接口创建模拟

时间:2011-04-04 06:55:33

标签: .net unit-testing

为什么我们在.NET中执行单元测试时模拟接口?为什么不模拟课程。如果问题很愚蠢,请纠正我。

3 个答案:

答案 0 :(得分:3)

您不创建模拟接口。您可以创建生产类实现的接口,然后手动创建测试双,或者使用模拟框架“假装”以可编程方式实现接口。当您测试其他依赖于接口的生产类时,将使用这些测试双精度(手动或模拟)。

某些框架会让你在某种程度上模拟类,但通常它们不允许模拟密封类,或者使用模拟行为指定非虚方法的行为。

我不完全确定这会回答你的问题 - 如果你能澄清这个问题,我会尽量澄清我的答案......

答案 1 :(得分:2)

你的意思是模拟对象。没有模拟界面这样的东西,有一个模拟接口(或类)。

它们被使用,因此您可以集中精力测试类,而无需测试其依赖性。

由于单元测试是关于测试最小的代码单元(通常是.NET中的一个类),所以你不希望你的测试执行不属于类的代码,这就是模拟进入的地方。 / p>

这个想法是你使用模拟而不是被测试类的依赖项的任何实现,从而确保测试的代码只是被测试类的代码。

答案 2 :(得分:1)

测试涉及某个单位的行为。由于在测试某些案例时存在其他各方,因此您需要一种安全绕过它们的方法。在某种程度上,您的测试不会受到影响。模拟和存根提供了这种能力。