1

我有一個Visual Studio解決方案,我使用MSTest進行單元測試,並且想使用ReSharper Testrunner,因爲我認爲Visual Studio Test Explorer非常痛苦。我的整個解決方案都是爲x64構建的,因爲我有一些依賴程序集專門針對x64編譯而不適用於x86。ReSharper Testrunner在x64上使用BadImageFormatException失敗

我的單元測試在VS Test Explorer中運行良好,但在ReSharper Testrunner中失敗。

以下異常被拋出,它擊中單元測試的第一行之前的權利:

Unable to get type xxx.xxx.xxx. Error: System.BadImageFormatException: Die Datei oder Assembly "file:///D:\path\to\unit\test\project\bin\Debug\xxx.xxx.xxx.dll" oder eine Abhängigkeit davon wurde nicht gefunden. Es wurde versucht, eine Datei mit einem falschen Format zu laden.

很抱歉的例外,在德國之中。這只是一個'典型的'BadImageFormatException其中xxx.xxx.xxx是我單元測試項目的類型。 堆棧跟蹤表明,異常正在從

Microsoft.VisualStudio.TestPlatform.MSTestFramework.TypeCache.LoadType(String typeName, String assemblyName)

我知道有關於計算器已經有很多類似的問題拋出,但我已經嘗試過每一種可能的解決辦法,我發現(無任何影響),因此,我認爲我的問題在別的地方。

是我的嘗試,到目前爲止,檢查:

  • 我雙重檢查在我的解決方案,每一個項目被編譯到x64(甚至在釋放模式) - everyhting似乎罰款
  • 默認處理器架構MSTest顯式設置爲x64(可能這就是爲什麼它與內置的測試資源管理器配合使用)
  • 儘管應該根據項目平臺來決定,但我明確將平臺設置爲ReSharper Testrunner x64
  • 我甚至將ReSharper的單元測試設置修改爲force在64位處理中執行單元測試
  • 在ReSharper設置中禁用了組件的Shadow-Copy(僅僅因爲我非常沮喪,現在,並切換到審判&錯誤模式就在我開始創建這個問題)

有刺激性的測試運行罰款與測試資源管理器,但不與ReSharper的,雖然雙方已設置爲64位。我是否缺少需要修改的特定設置?或者,當將ReSharper與MSTest結合使用時,他們會遇到一些已知問題嗎?我可能也會考慮使用nUnit,但我需要修改所有測試,所以最好還是留在MSTest中。


Additionaly有關版本和東西的一些信息(不知道它可能會有所幫助):

  • 的Visual Studio 2013高級版更新v12.0.30110.00 1
  • 的.NET Framework 4.5在解決方案中的每個項目上
  • ReSharper 8.2 C#Edition,Build 8.2.0。2160

回答

1

經過一些額外的研究,我在ReSharper的社區發現了一個similar post,這表明了ReSharper被配置爲創建和元數據使用每個默認的應用程序,這是配置爲使用的testsettings文件x64架構。我必須在解決方案(位於解決方案項目下)上創建自定義TestSettings文件,將其設置爲強制以x64運行,然後編輯ReSharper設置以使用此自定義TestSettings文件而不是默認文件。我仍然不知道爲什麼ReSharper不使用爲MSTest指定的默認處理器體系結構,也忽略了我在ReSharper設置中明確指定的設置。

但無論如何它現在工作。

相關問題