使用VS 2012后我升级到Visual Studio 2013。 在VS 2012中,当创建新的测试项目并将文件添加为“始终复制”时,visual studio将它们复制到bin / debug中,而运行当前目录(Environment.CurrentDirectory)则为“bin / debug”。 在VS 2013中,当前目录是“TestResults / something + guid”,VS 2013没有将文件复制到此文件夹,因此抛出了“找不到文件”异常。 如何将当前目录更改为VS2013中的bin / debug与VS 2012一样?
谢谢!
答案 0 :(得分:2)
处理此方案的正确方法是使用DeploymentItemAttribute
或测试设置配置来包含所需的文件。这是因为并非所有测试都需要相同的文件,不同的测试可能需要完全不同的配置,或者您可能需要多次测试运行,并且需要检查测试工件以了解为什么一次运行失败而另一次成功(唯一的区别是引用的程序集或松散的文件。)此外,当在托管环境(例如Team Foundation Server)中运行时,在代理服务器上使用相同的模式,编写测试以设置当前目录在运行时将失败像TFS测试代理一样。
顺便说一下,你在测试过程中看到的路径实际上并不是VS2013,它是MS测试代理本身(第二个进程为沙盒目的运行测试,我相信这是自VS2010以来。)
听起来你有一个额外的问题,但保证是以下之一。在没有看到异常细节的情况下,我正在做出最好的猜测,这些都是可能的顺序:
您有一个松散的文件,例如测试项目中包含的“test.txt” ,并且您有一个DeploymentItemAttribute
装饰您的测试方法。但“test.txt”的“复制到输出文件夹”设置设置为“不要复制”。
更改此设置,重建,然后重新测试应该有效。
您有一个缺少的程序集引用,可能是非BCL程序集(或者更具体地说,您缺少对正在引用的程序集引用的程序集的引用。)
要解决此问题,您应该加载fuslogvw.exe
并使用日志数据来发现测试项目中缺少的程序集引用。
您引用了针对特定处理器体系结构(x86 vs x64 vs MSIL)编译的本机DLL或程序集,并且无法在运行MS Test Agent的处理器体系结构中加载它。
解决方法是在运行测试时使用具有正确处理器体系结构的程序集。
在项目引用,“复制到输出目录”设置和[DeploymentItem]
之间,您的测试应该是找到他们所依赖的文件。
如果您需要更多信息,请告诉我,如果您仍然遇到问题,我建议您修改问题以包含异常详细信息(或至少重要的部分,例如Type
,{{ 1}}和Message
的前5行。)