У меня в конвейере есть такая тестовая задача:
- 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
При этом тестовая задача завершается с ошибкой «Один или несколько предоставленных параметров запуска содержат недопустимый токен». Я также попробовал фильтровать по определенной категории тестов в качестве временного решения, это было сделано с использованием документации, предоставленной Microsoft 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'
Обнаружена проблема: например, --filter TestCategory!=Ignore
следует располагать после --configuration ${{ parameters.buildConfiguration }}
, а не в конце аргументов.
Не следует помещать какие-либо аргументы после
--DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=cobertura,opencover
или он выдаст (я думаю, если поставить его в конце, предыдущий аргумент попытается проанализировать фильтр и выдаст).
Моя страница не обновлялась и я пропустил ваш комментарий! Спасибо за ответ, мне удалось найти это на 8 минут позже!