我正在为一个类的单元测试工作。这个类正在处理一个文件。我已经实现了几个单元测试并单独运行它们,但是当我让它们全部同时运行时,注意到测试失败。所以我发现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