首页 > 解决方案 > 使用 VStest 并行运行测试不起作用

问题描述

我正在尝试使用 VSTest Task 实现并行测试,如下文所述。 https://docs.microsoft.com/en-us/azure/devops/pipelines/test/parallel-testing-vstest?view=azure-devops

简要说明我在做什么:

我在同一台服务器上安装了两个自托管代理。当我使用单个代理选项(其中之一)运行测试时,它运行没有任何问题。但是,当我通过 a) 基于测试和代理数量的简单切片或 b) 基于测试程序集的切片应用多代理选项时,我收到以下错误。##[error]'Discovery' 类型的切片是'Aborted',因为错误:System.Exception:没有从指定的测试源发现测试。

错误信息

在此先感谢 Udaya Bhaskar。

标签: devopsvstestparallel-testing

解决方案


根据评论中的 YAML,这看起来像是磁盘上的路径问题,来自任务帮助参考。

  • PublishBuildArtifacts任务的默认路径为$(Build.ArtifactStagingDirectory); 您已将其覆盖为$(Build.ArtifactStagingDirectory)\Packages. 如果在查看构建的人工制品时设置正确,您应该能够下载从该位置上传的测试程序集及其依赖项。
  • DownloadBuildArtifacts 任务有一个默认值downloadPath$(System.ArtifactsDirectory)YAML 视图表明您尚未覆盖该任务。
  • VSTest 任务的默认searchPath值为$(System.DefaultWorkingDirectory); YAML 视图表明您已将其设置为$(Agent.BuildDirectory)\Bin.

此处的确切行为可能取决于您的代理如何为其磁盘路径设置。$(Agent.BuildDirectory)通常是代理的基本工作路径中的编号子目录之一。有趣的是,虽然DownloadBuildArtifacts' 文档说$(System.ArtifactsDirectory)是它的默认值,但它并没有出现在当前的预定义变量列表中;如果它实际上是指$(Build.ArtifactStagingDirectory),则默认为“ numbered_build_subdirectory \a”。

由于您的测试搜索路径将扩展到“ numbered_build_subdirectory \Bin”,我希望(假设文件被正确发布)它们被下载到位于测试任务所针对的搜索路径之外的位置,这可以解释为什么没有正在寻找测试。

我建议将下载和搜索路径修改为DownloadBuildArtifactsVSTest基本目录相同且相对于基本目录,例如:($(Agent.BuildDirectory)\Tests或适合您的管道的任何内容)。


推荐阅读