【问题标题】:How to resolve TFS DirectoryNotFoundException after implementing ordered test?实施有序测试后如何解决 TFS DirectoryNotFoundException?
【发布时间】:2018-11-14 06:46:21
【问题描述】:

我们有一个 TFS 2013 服务器,它在每次签入时运行我们的 CI 构建,但我们也有一个隔夜构建,可以在无人时运行我们的整个测试套件(其中一些非常昂贵的数据库测试)。

这一切都运行良好,但我想通过使用有序测试来指定测试的顺序。所以我把它放在适当的位置,它似乎运行一切都很好,除了一个例外:任何想要通过调用相对路径从磁盘检索文件的测试都会出现以下错误。

测试方法 TrackerTests.Accounting.ActionTests.AccountingActionFactoryTests.AccountingActionFactoryGeneratesCorrectActionsForSampleTestData 抛出异常: System.IO.DirectoryNotFoundException:找不到路径的一部分 'C:\Builds\3\Tracker2\Tracker Edge Nightly Test Run\TestResults\TFSBuild_T2BUILD2 2018-06-01 12_39_47\Out\Accounting\SourceData\Prepay-Cleared- 12-16-2013-12-22-2013-schema.xml'。 在 System.IO.__Error.WinIOError(Int32 错误代码,字符串可能全路径) 在 System.IO.FileSt

当不在有序测试容器中时,这些测试都运行良好的事实让我认为我只需要告诉它如何找到正确的路径。正确的路径是:

C:\Builds\3\Tracker2\Tracker Edge 夜间测试运行\src_projects\Tracker2\TrackerEdge\TrackerTests\Accounting\SourceData\

但是我该怎么做/在哪里做呢?我尝试使用 testSetting 文件,但无法使用。

【问题讨论】:

标签: tfs visual-studio-2017


【解决方案1】:

最终,我发现测试是按命名空间排序的——至少在顶层是这样。这是在创建 .runsettings 文件并操作 ResultsDirectory 元素之后发生的。它影响了构建服务器查找文件的位置,但构建服务器仍希望向其添加几个子文件夹级别。

通过将我们最昂贵的数据库测试放入他们自己的命名空间中,我能够操纵命名空间的名称,使其在列表中排名靠前,从而在流程的早期执行,这是我们的目标。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 2020-08-18
    • 1970-01-01
    • 2017-09-10
    • 2020-04-10
    • 2019-06-09
    • 2015-04-01
    相关资源
    最近更新 更多