我的管道中有一个这样的测试任务:
- task: DotNetCoreCLI@2
displayName: 'Unit Tests'
inputs:
command: 'test'
arguments: '--configuration ${{ parameters.buildConfiguration }} --no-build --collect:"XPlat Code Coverage" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=cobertura,opencover'
publishTestResults: true
projects: '$(Agent.BuildDirectory)\s\$(Build.Repository.Name)\*.sln'
我有多个使用 XUnit 的测试项目,我想在这个特定管道中运行所有单元测试时禁用并行性。
即使我在测试项目中禁用了并行化,管道的行为也有所不同。我发现可以在参数中提供以下参数:
-- xunit.parallelizeAssembly=false
执行此操作时,测试任务会失败并显示错误“提供的一个或多个运行设置包含无效令牌”。我还尝试过滤特定的测试类别作为临时解决方案,这是使用微软提供的文档https://github.com/Microsoft/vstest-docs/blob/main/docs/filter.md完成的。通过 cmd 完成时,过滤条件有效,但是通过管道使用它时,我仍然遇到相同的错误“提供的一个或多个运行设置包含无效令牌”。
过滤器像这样添加到管道中:
arguments: '--configuration ${{ parameters.buildConfiguration }} --no-build --collect:"XPlat Code Coverage" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=cobertura,opencover --filter TestCategory!=Ignore'
请帮助我了解如何设置参数。
通过 cmd 完成时,过滤条件有效,但通过管道使用它时,我仍然遇到相同的错误“提供的一个或多个运行设置包含无效令牌”。
使用相同的 dotnet 任务参数时,我可以重现相同的问题。
要解决此问题,您可以将过滤器类别参数放在配置参数之后。
例如:
arguments: '--configuration release --filter TestCategory!=Ignore --collect:"XPlat Code Coverage" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=cobertura,opencover -- xunit.parallelizeAssembly=false'
任务 YAML:
- task: DotNetCoreCLI@2
displayName: 'Unit Tests'
inputs:
command: 'test'
arguments: '--configuration ${{ parameters.buildConfiguration }} --filter TestCategory!=Ignore --collect:"XPlat Code Coverage" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=cobertura,opencover -- xunit.parallelizeAssembly=false'
publishTestResults: true
projects: '$(Agent.BuildDirectory)\s\$(Build.Repository.Name)\*.sln'