Azure DevOps VSTest@2任务dump文件无法找到,如何配置将其作为制品留存
VSTest任务全阶段dump文件留存配置方案
你可以通过新增管道制品上传任务捕获全阶段生成的dump文件,具体配置方式如下:
配置逻辑
VSTest任务开启diagnosticsEnabled: True后生成的dump文件默认存放在代理的临时TestResults目录下,不管是测试执行阶段还是初始化、销毁阶段生成的dump都会落盘到该目录,只需要在所有测试任务执行完成后新增制品上传步骤,匹配所有dump文件上传即可。
修改后的完整YAML示例
- ${{each testItem in parameters.testsToRun}}: - task: VSTest@2 timeoutInMinutes: ${{parameters.testtimeout}} displayName: 'Run ${{testItem.testAssemblyName}}' inputs: testAssemblyVer2: ${{testItem.testAssemblyName}} searchFolder: '$(Build.SourcesDirectory)\bin\$(BuildPlatform)\$(BuildConfiguration)' runSettingsFile: RunSettings.runsettings runTestsInIsolation: false testRunTitle: ${{testItem.testAssemblyName}} platform: '$(BuildPlatform)' configuration: '$(BuildConfiguration)' diagnosticsEnabled: True testFiltercriteria : ${{testItem.testFiltercriteria}} continueOnError: ${{parameters.continueonError}} # 新增全量dump上传步骤 - task: PublishPipelineArtifact@1 displayName: '上传所有测试生成的dump文件' # 保证测试失败/取消时也会执行上传 condition: succeededOrFailed() inputs: # 搜索根目录为代理默认TestResults存放路径 targetPath: '$(Agent.TempDirectory)\TestResults' # 制品名可自定义,这里加构建ID方便溯源 artifactName: 'Test-Dump-Files-$(Build.BuildId)' # 匹配所有后缀为dmp的文件 patterns: '**/*.dmp'
可选优化:固定dump输出路径
如果怕代理默认临时目录变动导致匹配不到文件,可以修改RunSettings.runsettings配置,固定诊断文件输出路径:
<RunSettings> <RunConfiguration> <!-- 固定输出到源码目录下的TestResults文件夹 --> <ResultsDirectory>$(Build.SourcesDirectory)\TestResults</ResultsDirectory> </RunConfiguration> <!-- 按需配置dump生成规则,比如崩溃/挂起时都生成全量dump --> <LoggerRunSettings> <Loggers> <Logger friendlyName="blame" enabled="True"> <Configuration> <CollectDumpOnTestSessionHang /> <DumpType>full</DumpType> </Configuration> </Logger> </Loggers> </LoggerRunSettings> </RunSettings>
修改后同步把上传步骤的targetPath改成对应配置的路径即可。
内容的提问来源于stack exchange,提问作者Derek
相关产品推荐
相关产品推荐

