c# – 通过将抽象类实例化为模拟对象来对它进行单元测试是否可以?

我注意到你可以通过将抽象类实例化为一个模拟对象来对它进行单元测试.因此,您可以模拟抽象属性方法,同时能够测试已实现的属性方法.

但是,我习惯于区分要测试的类和注入到mock / stub的依赖项.那么,在我新启蒙的早期阶段,我想知道这种测试方法是否有任何陷阱?有什么想法吗?

问候,
莫滕

解决方法

具有任何价值的抽象类应该具有可以实例化的具体子类.所以单元测试那些,并通过它们隐式地基类.

如果它没有具体的子类,我想不出它应该存在的任何理由(作为一个抽象类,即).

一般来说,我更喜欢使用mocking来设置要测试的类的环境,而不是实例化类本身.这种区别 – 对我来说 – 使测试用例更加清晰,并确保我始终测试类的真实功能.

当然,当主要问题是无论如何能够以某种方式编写单元测试以启用重构时(如Working Effectively with Legacy Code中所讨论的),我可以想到案例(使用遗留代码).作为这种情况下的临时解决方案,(几乎)任何事情都会发生.但是一旦单元测试工作,该类应该适当地重构,以使其干净和可测试(并且它的单元测试也是如此,以使它们可维护).

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...