编写接口是为了帮助测试一个好的做法吗?

时间:2015-01-14 03:32:00

标签: c#

我所处理的项目有多个图层,每个图层的对象都在后续图层中使用。但是有些类没有任何接口,并且有非虚方法。所以基本上我将无法使用模拟框架来从其他层调查这些类。当我要求开发人员为同一个类创建一个接口,以便我可以模拟它时,他问我为什么要创建一个接口,如果我不打算重用它。 编写接口只是为了提高代码的可测试性是一个好习惯吗?

1 个答案:

答案 0 :(得分:2)

您的代码应松散耦合,并具有良好的依赖关系管理,以便您轻松编写单元测试 。如果您无法轻松编写单元测试,那么这是您的代码构建不够好的第一个迹象,您需要对其进行重构。因此,您更改生产代码的动机(在您的情况下添加接口)应该是使您的代码更好,而不仅仅是援助测试。如果你能做到第一个 - 你会免费获得第二个。

顺便说一句,遵循TDD实践的主要好处之一是良好的架构从一开始就强制执行:编写不可测试的代码很困难,因为在编写代码之前编写测试。

所以,答案是肯定的,添加接口是可以的,但它应该是为了良好的架构而做的,而不仅仅是为了帮助你为编写测试糟糕的架构。​​