【问题标题】:TFS Build Machine Test method errors out on build machineTFS 构建机器测试方法在构建机器上出错
【发布时间】:2013-01-01 10:59:15
【问题描述】:

这是我的单元测试代码:

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

     .... do some thing with the files...
}

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

System.IO.DirectoryNotFoundException:找不到路径的一部分 'C:\Builds\4\30 我的文件夹 v1.0\myfolder1\TestResults\SCMTFSService_MyBuildServer 2013-01-16 18_06_52_Any CPU_Release\Out\Common\MySpecialFiles\'。

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

\\MyBuildServer\Builds\MyFolder\MySolution_20130116.5\Common\MySpecialFiles

在我的单元测试代码中,我的文件如下:

var files = Directory.GetFiles(
    Directory.GetCurrentDirectory() + "/Common/MySpecialFiles/", "*.*");

当我的单元测试在 TFS 构建机器上运行时,有没有办法可以查看已部署的 Common\MySpecialFiles 中的文件?

【问题讨论】:

  • 你能发布你的单元测试代码(包括属性)吗?

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-07-02
      • 2012-12-13
      • 1970-01-01
      • 2015-12-07
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      • 2012-09-16
      • 1970-01-01
      相关资源
      最近更新 更多