我有一個Outlook添加在我使用的地方Microsoft.Office.Interop.Outlook.Storageitem保存我的設置。單元測試失敗,HRESULT:0x80070005(E_ACCESSDENIED)TFS
我的大多數測試訪問設置以設置或獲取用於聯繫服務器的配置。
在我的本地機器上,所有的測試都運行良好。但是,當我在我的項目到TFS檢查和運行測試還有所有的人都失敗與錯誤:
System.UnauthorizedAccessException: Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error: 80070005 Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)).
當測試調用下面的代碼行出現的錯誤。
Folder inbox = (Folder) new Microsoft.Office.Interop.Outlook.Application().GetNamespace("MAPI").GetDefaultFolder(OlDefaultFolders.olFolderInbox);
我asume,由於測試試圖訪問展望的應用並沒有允許出現錯誤。
- 展望是哪裏TFS運行Windows Server 2012中上instaled。
- 還沒有配置Mailaccount,Outlook啓動一次。 (測試運行良好,當我在一臺機器上手動啓動它時,沒有配置Mailaccount的Outlook。)
- C:\ Windows \ SysWOW64 \ config \ systemprofile \ Desktop文件夾存在。
- 我已經爲用戶設置NETWORK SERVICE所有權限Controlpanel->管理工具 - >組件服務 - > computers-> myComputer-> DCOM Config-> Microsoft Outlook中
我還發現this question這對我的問題沒有答案。
是否有任何其他步驟可以嘗試讓我的測試成功運行測試?
我已經使用TDD編寫了幾個Office加載項。我的建議是你的單元測試項目不應該使用真正的Outlook對象模型。測試項目甚至不應該引用Interop程序集。好消息是互操作程序集只公開接口,這使得他們真的可以使用模擬框架,如Moq https://github.com/Moq/moq4 –
您正在使用哪個版本的TFS?你使用XAML構建還是vNext構建?你是如何配置構建定義的? –