当前位置:  开发笔记 > 编程语言 > 正文

模拟对象 - 将所有方法声明为虚拟或使用接口?

如何解决《模拟对象-将所有方法声明为虚拟或使用接口?》经验,为你挑选了2个好方法。

在.net中,与Java不同,默认情况下方法不是虚拟的.为了使用大多数模拟对象框架,您必须在"真实"对象上将您想要在模拟上使用的方法标记为虚拟,或者您必须有一个可以模拟被测试的类的接口接受代替实施.

将每个方法标记为虚拟似乎是不好的形式,但是为每个类定义一个接口似乎也是不好的形式.

什么是最好的事情?



1> Mehrdad Afsh..:

如果我必须在两者之间做出选择,我会选择接口.接口用于定义契约,这基本上是模拟对象将遵循的契约.将方法标记为虚拟可能会产生意想不到的副作用.它会影响被模拟的实际类的设计.接口只定义方法名称,对实际类没有影响.


从正确的角度来看,这对我来说很有意义.在.net中,我定义一个虚方法表明类设计者打算在某处重写它.就副作用而言,它也不能内联等.关于我认为遵守合同的模拟你是正确的.

2> tvanfosson..:

我的经验法则是定义接口,如果我希望有多个实现,实际的具体应用程序类或单个应用程序实现和单元测试的虚假实现.如果我只期望单个实现并且该类不需要伪造(大多数不需要),那么我将根据需要转到虚拟方法路由并重构为接口.

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有