devops - 使用 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。
解决方案
根据评论中的 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”,我希望(假设文件被正确发布)它们被下载到位于测试任务所针对的搜索路径之外的位置,这可以解释为什么没有正在寻找测试。
我建议将下载和搜索路径修改为DownloadBuildArtifacts
与VSTest
基本目录相同且相对于基本目录,例如:($(Agent.BuildDirectory)\Tests
或适合您的管道的任何内容)。
推荐阅读
- python - Trouble getting the position of an element while looping through a list (Python)
- git - Git rejected commit, now I can't find the file
- c# - Unity预制对象位置覆盖编码实例化位置?
- php - 如何使用 Json?
- matlab - 如何确定 k-nn 中的类
- mysql - MySQL 语句复制 - 导致重复行的触发器
- reactjs - 如何使用客户端时区格式化 React SSR 渲染页面中的时间?
- python - Keras - LSTM 最佳批量大小
- flutter - Bottom navigation bar is reloading all the widgets each time I press a navigation item
- python - How to make a class which disallows duplicate instances (returning an existing instance where possible)?