当前位置:  开发笔记 > 后端 > 正文

用于Microsoft Office的.NET加载项的单元测试

如何解决《用于MicrosoftOffice的.NET加载项的单元测试》经验,为你挑选了0个好方法。

有没有人对Office托管应用程序加载项的单元测试有任何建议?我正在使用NUnit,但我遇到了与MSTest相同的问题.

问题是在Office应用程序(在我的例子中是Word)中加载了.NET程序集,我需要对.NET程序集的该实例的引用.我不能只是实例化对象,因为它不会有一个Word实例来做事情.

现在,我可以使用Application.COMAddIns("addin的名称").对象接口来获取引用,但这会得到一个通过RequestComAddInAutomationService返回的COM对象.到目前为止,我的解决方案是,对于该对象,我想要测试真实.NET对象中的每个方法的代理方法(所有在条件编译下设置,以便它们在发布的版本中消失).

COM对象(一个VB.NET类)实际上有一个对真实加载项实例的引用,但我尝试将其返回给NUnit,我得到了一个很好的p/Invoke错误:

System.Runtime.Remoting.RemotingException:此远程处理代理没有通道接收器,这意味着服务器没有正在侦听的已注册服务器通道,或者此应用程序没有合适的客户端通道与服务器通信.在System.Runtime.Remoting.Proxies.RemotingProxy.InternalInvoke(IMethodCallMessage reqMcmMsg,布尔useDispatchMessage,的Int32 CALLTYPE)在System.Runtime.Remoting.Proxies.RemotingProxy.Invoke(即时聊天reqMsg)在System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData&msgData,Int32类型)

我尝试使主加载项COM可见并且错误更改:

System.InvalidOperationException:由于对象的当前状态,操作无效.at System.RuntimeType.ForwardCallToInvokeMember(String memberName,BindingFlags flags,Object target,Int32 [] aWrapperTypes,MessageData&msgData)

虽然我有一个解决方法,它很混乱并且在实际项目中放置了大量测试代码而不是测试项目 - 这实际上并不是NUnit的工作方式.

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