2010-01-15 102 views
3

我目前正在使用MS Test進行單元測試的項目。當我執行「運行所有測試」時,出現大約1/3測試的以下錯誤:運行所有測試時的MS測試錯誤

測試方法[測試方法]拋出異常System.IO.FileLoadException,但預期會發生異常System.InvalidOperationException。異常消息:System.IO.FileLoadException:加載此程序集將產生與其他實例不同的授予集。 (異常來自HRESULT:0x80131401)

如果我去任何失敗的測試和運行測試本身它會給出同樣的錯誤。如果我在測試中放置一個斷點並調試測試,它將通過並且沒有錯誤。如果我再次運行個人測試,它會通過。如果我回到運行所有測試,我再次獲得上述三分之一測試的錯誤。

我之前就有過這個問題,我沒有做任何修理,只是神奇地消失了。但現在它回來了,非常沮喪。

什麼是造成此錯誤?有沒有解決這個錯誤?

回答

1

這聽起來像你有Interacting Tests - 一個xUnit Test Patterns氣味。

總之,一些測試依賴於以前的測試已經執行,所以當你孤立地運行它們時,它們會改變行爲,因爲它們對環境的隱含假設結果是錯誤的。

這也可以解釋爲什麼你之前有過這個問題,然後就消失了。儘管MSTest在訂購測試方面似乎相當穩定,但它可能會決定下次以不同的順序運行它們。

我不能告訴你如何解決問題,因爲它是個人。但是,請查找Shared Fixtures。例子包括

  • 數據庫
  • 文件
  • 靜態(在Visual Basic中的Shared)類型

在你的情況下,FileLoadException表明你的測試期待一些文件被周圍。當你運行整個測試套件時,這些文件已經被以前的測試用例留下了,而當測試單獨執行時,這些文件顯然不存在。

+0

我知道數據庫沒有問題,因爲我們使用RhinoMocks來模擬我們所有的數據訪問。不知道有關文件。我將檢查正在使用的任何文件。謝謝 – troyappeldorn 2010-01-15 17:32:39

+0

沒有正在使用的文件。所以不完全確定System.IO.FileLoadException。仍然沒有規律地發生。通常可以通過重新啓動VS來修復。 – troyappeldorn 2010-02-16 21:53:06

相關問題