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



下面是我的单元测试代码:

[TestMethod]
public void GetMyAttachmentTest()
{
    var files = Directory.GetFiles(
        Directory.GetCurrentDirectory() + "/Common/MyFiles/", "*.*");
     .... do some thing with the files...
}

在TFS构建机器上,当我运行单元测试时,我得到以下错误:

<>之前System.IO.DirectoryNotFoundException:找不到路径的一部分"C:Builds430 myfolder v1.0myfolder1TestResultsSCMTFSService_MyBuildServer 2013-01-16 18_06_52_Any CPU_ReleaseOutCommonMySpecialFiles"。之前

当我查看TFS中的拖放文件夹时,我看到我的文件被部署到以下文件夹中:

<>之前 MyBuildServer 制造 MySpecialFiles MyFolder MySolution_20130116.5 常见之前在我的单元测试代码中,我得到的文件如下:
var files = Directory.GetFiles(
    Directory.GetCurrentDirectory() + "/Common/MySpecialFiles/", "*.*");

是否有一种方法,当我的单元测试运行在TFS构建机器上,它可以查看部署的CommonMySpecialFiles中的文件?

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

不使用动态路径,而是设置具有适当权限的网络共享。我建议将路径存储到该网络共享的配置文件或DB中,以便可以在不推送代码的情况下进行更新。

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

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

最新更新