有沒有人對單元測試託管應用程序加載項的Office有任何建議?我使用的是NUnit,但我遇到了與MSTest相同的問題。用於Microsoft Office的.NET加載項的單元測試
問題是在Office應用程序(在我的情況下,Word)中加載了.NET程序集,我需要對.NET程序集實例的引用。我不能僅實例化對象,因爲它不會有Word的實例來處理事情。
現在,我可以使用Application.COMAddIns(「外掛的名稱」)。對象接口來獲取引用,但是我得到一個通過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:操作無效由於對象的當前狀態。 在System.RuntimeType.ForwardCallToInvokeMember(字符串成員名稱,標誌的BindingFlags,對象目標的Int32 [] aWrapperTypes,MessageData & MSGDATA)
雖然我有一個變通,它的混亂,並把大量的測試代碼中的實際項目而不是測試項目 - 這實際上並不是NUnit的工作方式。
我不得不嘲笑Office的整個工作! – 2009-01-14 15:01:39