我一直在Windows 7 64位PC上使用nunit和visual studio 2010。
我可以打开nunit gui并运行我的单元测试。如果我然后更改其中一个单元测试并尝试重建,我收到文件锁定错误,如下所示 -
错误1无法将文件“obj \ Debug \ myProject.Tests.dll”复制到 “斌\调试\ myProject.Tests.dll”。该进程无法访问该文件 'bin \ Debug \ myProject.Tests.dll',因为它正被另一个人使用 处理。 myProject.Tests
我已经使用进程资源管理器来验证是否是锁定dll的nunit-agent.exe。
我注意到通过工具>测试程序集nunit.exe在clr版本Net 2.0下运行,nunit-agent.exe在clr版本Net 4.0下运行。这可能与问题有关吗?如果是这样,我该如何解决?如果没有,有没有人知道还有什么可能发生?
感谢您的任何想法。
答案 0 :(得分:18)
我认为这与我的测试项目的位置有关。最初,我将nunit测试项目放在我的dll文件的单独目录中。我以为我会把所有的测试项目放在一个集中的位置。
我将他的测试项目移动到与我的视觉工作室项目下的测试dll相同的位置。之后,它似乎正常工作。
我认为这必须做影子副本。我在谷歌的nunit小组中读到.net框架只会在应用程序库或它的子目录中隐藏复制程序集。
这促使我尝试在我的应用程序库中创建nunit测试项目,这似乎有效。
希望这是有道理的。
由于
答案 1 :(得分:8)
我也遇到了确切的问题,但是czuroski的答案对我不起作用(虽然我认为我们实际上是在谈论同样的事情)。
对我来说有用的是确保在NUnit中设置Project Path
和Project Base
指向Project
下的同一根应用程序文件夹 - > Edit
。我将现有的Nunit项目重新保存到与我的VS sln文件相同的目录中。
答案 2 :(得分:0)
尝试此操作,依次单击“工具”>“设置”>“测试加载器”>“程序集隔离”>“默认过程模型”>“每个程序集在单独的过程中运行测试”。