设置测试中的摩擦使用抽象类而不是接口

时间:2010-08-16 18:29:25

标签: unit-testing

我已经开始关注测试驱动开发并发现它非常符合逻辑并且帮助了我很多。

我有一个问题

1)在很多StackOverflow的答案中,我看到人们说抽象基类会增加很多摩擦来设置测试。如果我们使用接口,那么摩擦就会减少。    我在想的是,如果Abstract类中没有默认实现,这对设置测试有什么影响。

对于Eg:HttpContext ...它暴露了许多需要设置的属性(读取queryString,FormCollection等)。在这里你必须先模拟所有这些东西才能在单元测试中实际使用HttpContext。 (我更喜欢使用moq)

如果有人可以帮助我理解为什么会增加摩擦力,那将会有所帮助。

- RN

1 个答案:

答案 0 :(得分:1)

我只能想到单元测试的一个相关差异(如果我们排除默认实现):抽象类的方法可以被密封, * 在这种情况下他们不能嘲笑,而接口从来没有这个问题。

* 或者最终,或者首先不是虚拟声明,具体取决于语言。