我正在爲一個類的單元測試工作。這個類正在處理一個文件。我已經實現了幾個單元測試並單獨運行它們,但是當我讓它們全部同時運行時,注意到測試失敗。所以我發現VisualStudio並行運行單元測試。鎖定在單元測試不工作
爲了避免在爲每個測試準備文件的過程中出現問題,我嘗試實現線程鎖定。但到目前爲止這是行不通的。
的後續行動,我提供了一個簡單的例子來解釋我的問題:
[TestClass]
public class UnitTest1
{
private static object lockObject = new object();
private void DoSomething()
{
File.Create(@"D:\test.txt");
for (int i = 0; i < 100000; i++)
{
}
File.Delete(@"D:\test.txt");
}
[TestMethod]
public void TestMethod1()
{
lock (lockObject)
{
DoSomething();
}
}
[TestMethod]
public void TestMethod2()
{
lock (lockObject)
{
DoSomething();
}
}
}
測試失敗,因爲每一個進程無法訪問該文件,因爲它已經從一個不同的進程使用。
有誰知道我做錯了什麼?
的'DoSomething'方法裏面也許鎖?它看起來像'鎖'工作取決於你的C#版本根據此評論不同:https://stackoverflow.com/a/6029829/7831383 – Rafalon
DoSomething只是爲例。但是,儘管如此,我試過了,它沒有改變任何東西 – royalTS
你是否想用其他方法開始每一種測試方法?如果是這樣,我建議你使用'[TestInitialize()]'來裝飾你想在每次測試之前運行的方法。 – Rafalon