如何在C#中测试COM依赖对象
我试图用一个依赖于COM接口的对象来做TDD。 我虽然在进行开发测试时嘲笑COM接口,但在集成测试中做到了真实。
但是,我无法模拟COM接口,我尝试使用Moq,并抛出exception:
用户代码未处理System.TypeLoadException消息=无法从程序集“DynamicProxyGenAssembly2,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null”加载类型“Castle.Proxies.iTunesAppProxy”。 该类型被标记为符合类型等效,但它具有通用参数,或者它不是结构,COM导入的接口,枚举或委托
是否可以与其他框架一起使用? 你如何使用COM依赖对象进行TDD?
在此先感谢!或代表
我建议你取得COM对象接口的所有权,这就是依赖倒置原则会发挥作用的地方。
如果您无权访问源代码,则必须创建自己的包装COM对象的抽象,否则您将在整个代码中进行第三方调用。
[编辑]
现在抽象应该能够被嘲笑。 包装器的实际实现将COM对象作为HAS-A
关系。
然后,您将需要对实现进行集成测试。
您需要将COM对象本身视为类似于数据库或图形呈现引擎或Web服务。
对于包含COM接口的程序集,尝试将“嵌入互操作类型”设置为FALSE。
好吧,我认为没有直接的方法,不确定一些模拟框架可以模拟COM。
我心中有什么……
你有一些COM接口,ISomeThing和COM对象实现了这个接口CoSomeThing,这是一些真正的实现。 您应该实现另一个COM组件,它将实现相同的接口,但实际上只是模拟它 – CoSomeThingMock。
在您的代码中,您实例化CoSomeThingMock,而不是CoSomeThing并使用它。
var component = new CoSomeThingMock(); var testObject = new Tested(component);
您需要在初始化部分中添加以下内容,如此处所述:https://code.google.com/p/moq/issues/detail?id = 254
上述就是C#学习教程:如何在C#中测试COM依赖对象分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
Castle.DynamicProxy.Generators.AttributesToAvoidReplicating.Add(typeof (TypeIdentifierAttribute));
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1019666.html