从TeamCity运行NUnit测试时出现FileNotFoundException错误

8
我正在使用内置的TeamCity NUnit运行程序来运行存储在.DLL文件中的测试。
我的.DLL引用了其他在同一文件夹中的DLL。
当运行这些测试时,我会收到引用DLL的FileNotFoundException错误。
如何解决这个问题?我认为TC NUnit运行程序可能正在使用其他目录作为主应用程序执行文件夹,从而防止实际上驻留在测试DLL旁边的文件无法正确加载,但尚未证明这一说法...
有人遇到过这种情况吗?
3个回答

10

好的,问题已经解决了,原来问题是很愚蠢和令人尴尬的:

我已经设置了 NUnit 测试运行器来执行这些测试:

**/*.Tests.dll

这意味着它将包括来自/bin/Debug/以及其他文件夹(如obj/)的测试。

当然,这些文件夹中不包括任何引用,导致相同的测试运行两次,并且其中一些测试失败了!


1
路径与构建检出目录有关,而不是任何工作目录。如果您需要其他路径,请使用%reference%语法引用带有目录路径的TeamCity属性。您在Windows下运行它吗?您使用TeamCity 6.5吗?
如果这些不能帮助您,请随时联系teamcity-feedback@jetbrains.com

我目前正在使用6.5版本的Windows。是的,我知道路径是相对的,那只是我在尝试理解为什么会失败时使用的一些逻辑解释。如果Dll A引用了Dll B(两者都在同一个目录中),那么有什么原因会导致内置的NUnit启动器无法找到Dll B呢? - lysergic-acid

0
在我的情况下,缺失的 DLL 是一个本地库,因为构建代理上安装了错误版本的 VC 运行时库,所以它无法加载。我的解决方案是直接将运行时 DLL(位于“C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\redist\x86\Microsoft.VC110.CRT”)添加到项目中(生成操作 = 内容,复制到输出目录 = 始终复制)。这也使得安装更加友好。
希望能有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接