模拟接口而不是具体类有什么好处

时间:2012-01-25 21:06:05

标签: class interface mocking concrete

模拟具体类与接口有什么好处吗?

样品:

在我的CustomerService课程中,我将CustomerDataProvider称为

customerDataProvider.GetCustomers();

customerDataProvider也可以是ICustomerDataProvider类型。当我想在不进入数据库的情况下测试CustomerService内的逻辑时,我必须模拟customerDataProviderICustomerDataProvider类型的CustomerDataProvider对象。

模仿一种类型优于另一种类型的优势在哪里?

1 个答案:

答案 0 :(得分:0)

模拟接口而不是类的主要好处是它更简单 - 接口不能被密封/最终,它们不能拥有你无法覆盖的方法,并且它们不能具有不寻常的构造语义。模拟库可以消除模拟类的许多麻烦,但它们无法弥补不可测试的设计。

模拟类而不是接口的主要原因是:有时你只有一个类。如果您正在进行自己的设计和实施,那么您可以选择构建一个或另一个。如果你正在消费别人的图书馆,你必须处理它提供的内容。

相关问题