加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 18:19:31 所属栏目:百科 来源:网络整理
导读:我注意到你可以通过将抽象类实例化为一个模拟对象来对它进行单元测试.因此,您可以模拟抽象属性和方法,同时能够测试已实现的属性和方法. 但是,我习惯于区分要测试的类和注入到mock / stub的依赖项.那么,在我新启蒙的早期阶段,我想知道这种测试方法是否有任何
我注意到你可以通过将抽象类实例化为一个模拟对象来对它进行单元测试.因此,您可以模拟抽象属性和方法,同时能够测试已实现的属性和方法.

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

问候,
莫滕

解决方法

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读