Azure Devops DotNetCoreCLI@2 测试任务:如何设置我的参数?

问题描述 投票:0回答:1

我的管道中有一个这样的测试任务:

- 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'

请帮助我了解如何设置参数。

c# unit-testing azure-devops continuous-integration azure-pipelines
1个回答
0
投票

通过 cmd 完成时,过滤条件有效,但通过管道使用它时,我仍然遇到相同的错误“提供的一个或多个运行设置包含无效令牌”。

使用相同的 dotnet 任务参数时,我可以重现相同的问题。

enter image description here

要解决此问题,您可以将过滤器类别参数放在配置参数之后。

例如:

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'
© www.soinside.com 2019 - 2024. All rights reserved.