我写单元测试的方法,该副本从源文件到目的地。基本上,它包括这样的代码:
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次测试的整个代码。 –