2014-12-03 106 views
3

我已經編寫了一個單元測試,它使用testsettings文件在OUT文件夾中部署一些引用的dll。我使用這個命令運行我的單元測試。Mstest單元測試從命令行失敗

"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\MSTest.exe" 
"/testcontainer:C:\Unittests\unit_test.dll" 
"/runconfig:C:\Unittests\unit_test_settings.testsettings" 
"/resultsfile:C:\Unittests\unit_test_results.trx" 

在我的單元測試的一些測試運行正常,但有些失敗,出現以下錯誤。

失敗的對象初始化(ISupportInitialize.EndInit)。名爲「some_referenced_dll.resources.dll,PublicKeyToken =」for fallback culture「en」的衛星程序集無法找到或無法加載。這通常是一個設置問題。請考慮重新安裝或修復應用程序。
System.Resources.MissingSatelliteAssemblyException:命名的衛星總裝...

在試圖解決這個問題,我加入了some_referenced_dll.resouce.dll作爲testsettings文件部署項目,但沒有幫助。

我可以看到dll被複制到OUT文件夾中。

此外,在將some_referenced_dll.dll作爲項目的引用添加後,測試在VS 2012中運行良好。

更多信息:

但是也有一些使用一些其他的DLL作爲refrence直接(比如ref_dll_2.dll)和傳球測試。這個ref_dll_2.dll也在OUT文件夾中。

我面臨的問題與dll(some_referenced_dll.resouce.dll)不直接引用我的測試。我的單元測試調用了一些開發代碼,它試圖初始化失敗的類。

強制加載dll會有意義嗎?有沒有辦法做到這一點?

回答

2

好吧,我終於解決了這個問題。記錄完整性。

問題是我的MSTEST單元測試無法找到資源/衛星程序集(some_referenced_dll.resources.dll)並因此拋出異常。我正在使用deploymentItem屬性來部署DLL(some_referenced_dll.dll),但不是資源DLL。解決方案是使用deploymentItem並部署資源dll(some_referenced_dll.resources.dll)。

Bill Wang在thread中提供了一個很好的答案,幫助解決了這個問題。這是一個簡單的修復一個非常惱人的問題。