微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

问候,
莫滕

解决方法

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

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

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

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

原文地址:https://www.jb51.cc/csharp/98178.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐