这是我的单元测试代码:
[TestMethod]
public void GetMyAttachmentTest()
{
var files = Directory.GetFiles(
Directory.GetCurrentDirectory() + "/Common/MyFiles/", "*.*");
.... do some thing with the files...
}
在TFS构建机器上,当我运行单元测试时,我收到以下错误:
System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Builds\4\30 my folder v1.0\myfolder1\TestResults\SCMTFSService_MyBuildServer 2013-01-16 18_06_52_Any CPU_Release\Out\Common\MySpecialFiles\'.
当我查看TFS中的drop文件夹时,我看到我的文件已部署到以下文件夹中:
\\MyBuildServer\Builds\MyFolder\MySolution_20130116.5\Common\MySpecialFiles
在我的单元测试代码中,我得到的文件如下:
var files = Directory.GetFiles(
Directory.GetCurrentDirectory() + "/Common/MySpecialFiles/", "*.*");
我的单元测试在TFS构建计算机上运行时是否可以查看部署的Common\MySpecialFiles
中的文件?
答案 0 :(得分:1)
问题有点模糊。在过去,我遇到过在临时位置执行单元测试的问题。对于GetCurrentDirectory()
等动态路径,这可能会出现问题。当temp目录更改/清除时,文件可能会“丢失”。
不使用动态路径,而是使用适当的权限设置网络共享。我建议将路径存储到此网络共享配置文件或数据库,以便无需代码推送即可更新。
答案 1 :(得分:0)
为什么不将文件的位置放在app.config / web.config文件的appSettings项目中?这样可以轻松地更改它以匹配您的环境,无论是本地环境,构建服务器还是部署环境。
否则,您必须在运行测试之前将当前目录设置为 \ MyBuildServer \ Builds \ MyFolder \ MySolution_20130116.5 ,这可能会以其他方式影响您的测试。