在单元测试(Unit Test)中我们遇到的问题之一是:假如被测试组件(类或项目)为A,组件A依赖于组件B,那么在组件A的单元测试ATest中测试A时,也需要依赖于B,在B发生改动后,就可能影响到A的测试结果。为了在测试A时隔离B对A的影响,这就是Microsoft Fakes要解决的问题。
解决上面的问题,Microsoft Fakes采用的方法是用将组件B用stubs或shims替换。
参看:
stub采用的方法是:用一个实现同样接口的类替换被依赖的类。采用这个方法的前提是:A所依赖的B,需要是“接口”,而不能是具体的类,这样才有可能创建一个实现接口B的stub。
shim采用的方法是:
所以一般情况下:use stubs for calls within your Visual Studio solution, and shims for calls to other referenced assemblies.
使用stubs
参看:
这篇文章的要点是:
需要在ATest中添加对A的引用——ATest用于测试A,当然要添加对A的引用;
需要在ATest中添加A所依赖的B引用——这是因为需要为B创建stubs
同时B可能还依赖于其他组件,也需要在ATest中添加对其他组件的引用,否则ATest还是不能正常运行。
在对B的引用中上单击右键,选择“Add Fakes Assembly"
在测试代码中,创建stub的实例并提供实现方法。