我寫單元測試的方法,該副本從源文件到目的地。基本上,它包括這樣的代碼:
public void MyMethod()
{
// ...
File.Copy(source, destination, true);
// ...
}
以我單元測試項目,我有一個測試文件:(test.png
),它位於在我的單元測試項目的Resources
文件夾。我已將Copy to Output
屬性設置爲Always
。
我有3個單元測試正在測試這個方法。
當他們擊中複製文件的代碼行時:source = "Resources\\test.png"
。
問題
當我單獨運行單元測試,他們都通過,一切都很好。 然而,當我在運行Visual Studio的所有測試中,我得到這個運行時錯誤和單元測試失敗:
System.IO.DirectoryNotFoundException
找不到路徑的一部分「資源\測試巴紐」。
我的思考......(修訂版)
可能是因爲Visual Studio中同時運行的每個單元測試在一個單獨的線程,他們都訪問同一文件在同一時間?
我認爲對於每個單元測試,Visual Studio正在清除
bin/Debug
和bin/Release
文件夾。然後它複製該文件夾中所有需要的項目文件。這有時導致文件實際上不存在?
問題
我怎樣才能解決這個問題?
是否有配置的任何設置來解決這個問題?
當多個單元測試訪問同一文件時,如何在Visual Studio(和Team City)中運行所有單元測試?
這可能幫助,如果你可以分享這些3次測試的整個代碼。 –