2011-09-07 55 views
7

我正在使用内置的TeamCity NUnit运行器来运行存储在.DLL文件中的测试。从TeamCity运行NUnit测试时发生FileNotFoundException

我的.DLLs引用了其他存在于同一个文件夹中的DLL。

当运行这些,我得到一个FileNotFoundException引用的DLL。

我该如何解决这个问题?我想也许TC NUnit亚军使用一些其他目录作为主要的应用程序执行文件夹,从而防止实际上位于测试DLL旁边的文件不能正确加载,但不能证明这一说法呢...

其他人遇到过这种情况?

回答

9

OK问题就解决了,它的确是愚蠢和尴尬:

我已经设置了NUnit的测试运行,以执行这些测试:

**/*.Tests.dll 

这意味着它将包括从/bin/Debug/测试和也从其他文件夹,如obj/

在这些文件夹中,当然不包含任何引用,使得相同的测试运行两次,其中一些失败!

1

路径与构建结帐目录相关,而不是任何工作目录。如果您需要其他路径,请使用%reference%语法以指向具有目录路径的TeamCity属性。你在Windows下运行它吗?你使用TeamCity 6.5吗?

如果没有帮助,喂免费联系[email protected]

+0

我目前使用6.5,Windows,是的。我知道路径是相对的,这只是我用来理解为什么失败的一些逻辑解释。如果Dll A引用了Dll B(都在同一个目录中),那么导致内置的NUnit启动器无法找到Dll B的原因是什么? –

0

在我的情况下,缺少的DLL是一个本地库,它不能被加载,因为在生成代理上安装了不正确的VC运行时版本。我的解决方案是直接在项目中添加运行时DLL(位于'C:\ Program Files文件(x86)\ Microsoft Visual Studio 11.0 \ VC \ redist \ x86 \ Microsoft.VC110.CRT')(build action = Content,copy to输出目录=总是复制)。这也使安装更友好。

希望这会有所帮助。