如何对抽象类进行单元测试

edi*_*ode 36 c# unit-testing visual-studio

在Visual Studio中使用了创建单元测试工具,显然它试图实例化我的抽象类.

我的问题是:我应该尝试单元测试Visual Studio试图让我这样做的方式,还是应该创建一个要实例化的模拟类,还是应该只测试使用这个抽象类的方法?

谢谢.

slo*_*oth 60

如果这个抽象类的方法值得测试,那么你应该测试它们.您总是可以为测试子类化抽象类(并将其命名为MyAbstractClassTesting)并测试这个新的具体类.


sll*_*sll 25

有两个相反的观点:

  • 不要测试抽象类本身,测试从它继承的具体类
  • 抽象类也应该进行测试,因为它提供了一些在所有继承类中共享的内置逻辑,因此您只需在抽象类中测试一次基本逻辑

我更喜欢第二个选项(当前)并使用RhinoMocks PartialMock功能测试抽象类,这允许我创建一个抽象类的模拟.


bla*_*ank 5

  1. 只需测试实现类.

  2. 您总是可以创建一个特定的测试实现,不会增加额外的功能.

  3. 听听测试.使用魔法的模拟工具来测试抽象类和私有方法等是测试代码的味道