我在Visual Studio 2012中定义了Generic Test。
如果我对所有路径进行硬编码,则测试运行完美。显然,我需要相对路径才能在构建服务器上工作。 但是,它无法部署我的文件,因为它查找的位置错误。
在“使用此通用测试部署的其他文件:”我的解决方案相关文件如下所示(逐字):
<Solution Directory>\SubDir\Tester.exe
当测试实际运行时,输出显示以下错误:
警告:测试运行部署问题:无法获取该文件 测试指定的部署项'\ SubDir \ Tester.exe' 'generictest1':System.IO.DirectoryNotFoundException:找不到 路径'C:\ Program Files(x86)\ Microsoft Visual Studio的一部分 11.0 \ Common7 \ IDE \ SUBDIR \ Tester.exe”。
正如您所看到的,它使用的是Visual Studio的工作目录,而不是它声称的'<Solution Directory>'
。
关于如何解决这个问题的想法,或者我可能做错了什么?
答案 0 :(得分:0)
关于此问题,有几个相关的已回答问题: Problems with DeploymentItem attribute C# DeploymentItem fails to copy file for MSTest unit test
然而,在VS 2012中,MS对MSTest进行了更改(遗憾的是,我找不到他们对这些更改所做的几篇博客帖子的网址 - 他们在其他新内容之间被提及了一些)所以现在当你有一个程序集作为部署项 - 从测试类,测试方法或TestSettings文件,它可能仍然被遗漏!
原因似乎是mstest从引用的程序集中查找类实例化。如果没有,则不会复制程序集。我们在使用框架的测试中遇到了这个问题,而框架又使用了NewtonSoft.JSON。我们必须创建一个虚拟测试类和方法,从NewtonSoft.JSON lib中实例化任何类,以便复制它的DLL。
放手一搏,手指交叉,确实有效。