Gridens - информационные технологии

Неудачный тест не приводит к сбою задачи в YAML

У меня есть конвейер сборки, как показано ниже

    variables:
    - name: BuildParameters.solution
      value: '**/*.sln'
    - name: buildConfiguration
      value: Release
    name: $(date:yyyyMMdd)$(rev:.r)
    trigger: none
    resources:
      repositories:
      - repository: self
        type: git
    stages:
    - stage: __default
      jobs:
      - job: Job_1
        displayName: Agent job 1
        pool:
          vmImage: windows-2019
        steps:
        - task: UseDotNet@2
          displayName: '.NET Core 3.1.404'
          inputs:
            version: '3.1.404'
            packageType: sdk
        - task: DotNetCoreCLI@2
          enabled: true
          displayName: dotnet test
          continueOnError: true
          timeoutInMinutes: 0
          inputs:
            command: test
            projects: '**/*test/*.csproj'
            arguments: --configuration $(buildConfiguration) --verbosity n --collect "Code coverage"
            publishTestResults: true        
        - task: PublishTestResults@2
          inputs:
            testResultsFormat: XUnit
            testResultsFiles: '**/TEST.xml'
            mergeTestResults: true
            failTaskOnFailedTests: true

Я намеренно сломал тест

Этот тест не пройден, но задача публикации результатов теста не проваливается полностью

я получаю предупреждение

##[warning]No test result files matching **/TEST.xml were found. xunit

Было ли у кого-нибудь такое?

Досадно, что если тест терпит неудачу, конвейер Azure классифицирует это как частичный успех, что не идеально. Я пытаюсь попасть в ситуацию, когда в случае сбоя теста мой конвейер не работает.

Этот пайплайн используется для проверки запросов на вытягивание — т. е. для сборки кода в PR и обеспечения прохождения всех тестов.

Когда я искал это, были ссылки на установку .NET 4.6.2 или более поздней версии, но это используется внутри конвейера сборки, поэтому не знаю, как это сделать.

Я что-то пропустил в тестовом задании dot net?

Павел


Ответы:


1

Когда вы устанавливаете для поля publishTestResults значение true для тестовой задачи dotnet. Ниже приведена выдержка из здесь.

Этот параметр добавляет --logger trx --results-directory $(Agent.TempDirectory) к аргументам командной строки.

Приведенные выше команды сгенерируют результат теста в формате VSTest(trx) и выведут результат в папку $(Agent.TempDirectory).

введите здесь описание изображения

Итак, вам нужно изменить задачу PublishTestResults@2, как показано ниже:

 - task: PublishTestResults@2
         inputs:
           testResultsFormat: VSTest  #change the format to VSTest
           testResultsFiles: '**/*.trx'  #change to find .trx file
           mergeTestResults: true
           failTaskOnFailedTests: true
           searchFolder: '$(Agent.TempDirectory)' #search the .trx file in $(Agent.TempDirectory)

Обычно поле continueOnError по умолчанию имеет значение false. И тестовая задача dotnet завершится ошибкой, если какой-либо тест не пройден. См. ниже:

введите здесь описание изображения

Если в поле continueOnError установлено значение true. Тестовая задача dotnet и конвейер покажут состояние Warnig.

введите здесь описание изображения

Таким образом, вы можете попробовать установить для поля continueOnError значение false, что приведет к сбою задачи и конвейера, если какой-либо тест не пройден. И не будет необходимости использовать PublishTestResults задачу. Для publishTestResults установлено значение true для тестовой задачи dotnet, результат теста будет автоматически опубликован тестовой задачей dotnet. Смотри ниже:

 - task: DotNetCoreCLI@2
          enabled: true
          displayName: dotnet test
          continueOnError: false
          timeoutInMinutes: 0
          inputs:
            command: test
            projects: '**/*test/*.csproj'
            arguments: --configuration $(buildConfiguration) --verbosity n --collect "Code coverage"
            publishTestResults: true   
24.12.2020
  • Спасибо, это выглядит обнадеживающим, однако я видел, что в задаче публикации результатов теста есть опция для mergetestresults, но я не вижу, как это сделать в тестовой задаче dotnet? 24.12.2020
  • В тестовой задаче @Paul dotnet нет параметра mergetestresults. Если вы имели в виду отображение результатов тестирования различных тестовых проектов на вкладке «Тесты» на странице сводки сборки, использование только тестовой задачи dotnet также может отображать все результаты тестирования на вкладке «Тесты». Если вам нужно использовать опцию mergetestresults. Затем вы можете просто изменить свою задачу publishtestresult, как показано выше. 25.12.2020
  • Новые материалы

    Журналы Py № 2: Если, Элиф, Иначе?
    У меня такое чувство, будто я давно ничего не писал, хотя прошло два дня с тех пор, как я опубликовал свою первую историю. В любом случае, сегодня произошло много всего, так что приступим...

    Работа в Реакции
    Я изучаю React в Bloc прямо сейчас. До сих пор я изо всех сил пытался понять темы. Тем не менее, я только что закончил проблему, над которой некоторое время размышлял, и хочу записать свой..

    Нужен ли банкам искусственный интеллект, чтобы кардинально изменить свою работу?
    Почему необходимо использовать искусственный интеллект в банковской сфере? Существенное использование многочисленных инноваций ИИ, таких как машинное обучение , глубокое обучение и..

    Какую последнюю статью вы считаете стоящей поделиться?
    Я люблю читать качественные статьи. Не стесняйтесь делиться своей работой.

    Преобразование CoreML, позволяющее использовать Fast-Neural-Style-Transfer на iOS и MacOS.
    Как использовать Fast-Neural-Style-Transfer на iOS Преобразованная модель: GitHub — john-rocky/CoreML-Models: Преобразованный зоопарк моделей CoreML...

    ИИ в правоохранительных органах: мощный инструмент с двойной природой
    Искусственный интеллект (ИИ) революционизирует правоохранительную деятельность, предлагая инновационные тактики расследования, повышая достоверность доказательств и оптимизируя процессы. Тем..

    Autoencoder Average Distance  — классический способ, используемый внутри Microsoft для выявления сходства…
    Среднее расстояние автоэнкодера (AAD) использует более простой подход для определения расстояния между двумя наборами данных. Нейронный автоэнкодер может преобразовать любой элемент данных в..