TFS Build Machine测试方法在构建机器上出错

时间:2013-01-17 19:50:48

标签: c# unit-testing tfs build-process

这是我的单元测试代码:

[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中的文件?

2 个答案:

答案 0 :(得分:1)

问题有点模糊。在过去,我遇到过在临时位置执行单元测试的问题。对于GetCurrentDirectory()等动态路径,这可能会出现问题。当temp目录更改/清除时,文件可能会“丢失”。

不使用动态路径,而是使用适当的权限设置网络共享。我建议将路径存储到此网络共享配置文件或数据库,以便无需代码推送即可更新。

答案 1 :(得分:0)

为什么不将文件的位置放在app.config / web.config文件的appSettings项目中?这样可以轻松地更改它以匹配您的环境,无论是本地环境,构建服务器还是部署环境。

否则,您必须在运行测试之前将当前目录设置为 \ MyBuildServer \ Builds \ MyFolder \ MySolution_20130116.5 ,这可能会以其他方式影响您的测试。