Рубрики
Uncategorized

Продолжая тестовый люкс в Azure DEVOPS на агенте по сборке Mac и публикация результатов

Этот пост, «бегая тестовый люкс в Azure DEVOPS на агенте по сборке MAC и публикация результатов», … помеченных с DEVOPS, MAC, тестированием.

Этот пост, «проводит ваш тестовый люкс в Azure DEVOPS на Mac Build Agent и публикация результатов», впервые появившись на https://www.calvinallen.net/running-your-test-suite-in-azure-devops-on-a-mac-build-agent-and-publishing-de-results.

Я работал на Xamarin. Образует заявку в течение последних нескольких месяцев и, наконец, добрался до точки, где мне нужна была наша система CI (в данном случае, Azure DEVOPS), чтобы запустить наш тестовый люкс и публиковать результаты. Звучит довольно легко, а? Ну, может быть, для некоторых, но я боролся с ним в течение нескольких часов, потому что мне нужно было использовать агент по сборке Mac для трубопровода.

Надеюсь, дорогой читатель, этот пост поможет вам в том случае, если вы столкнулись с подобной проблемой.

Давайте начнем в «начале» —

В моем ксамарине. Формы решения (используя Visual Studio для Mac), я создал .NET Стандартный проект библиотеки классов 3.1. Однако одно из первых требований к ксуниту, заключается в том, что мы изменяем этот проект от Netdstandard2.1 Проект, до netcoreapp3.1 Проект, редактируя файл проекта вручную. Вы можете прочитать больше об этом требовании здесь если тебе интересно.

После того, как проект был создан (и отредактирован) успешно, мы можем добавить пакеты XUNIT из Nuget — Ксунит и xunit.runner.visualstudio Отказ

Давайте напишем некоторые тесты! Обратитесь к этой странице документации XUNIT для «Начало работы» Написание тестов XUNIT. Пока страница в основном относится к командной строке, я делал большую часть этого из Visual Studio для Mac.

Теперь, когда у нас есть некоторые тесты в нашем проекте, давайте получим наш конвейер/MacOS Build Agent, чтобы построить, выполнять и публиковать результаты теста. Если бы мы были строить на агенте по сборке Windows Build, мы сможем следовать «большинству» инструкциях, найденных в Интернете, чтобы использовать «.NET CORE «задача (с командой« TEST »и отметьте флажок« Опубликовать результаты тестов и Code »). Но мы не. Так что же нам делать? Ну, это требует нескольких задач, чтобы это произошло.

Во-первых, так как я хочу собирать метрики тестирования наряду с тестами, нам нужно вернуться к нашему проекту и установить еще один пакет Nuget, Coolbelet.Collector .

Хорошо, с таким образом, давайте выкопать прямо в трубопроводные задачи, вам нужно сделать эту работу —

Используйте .NET. Основная задача для создания ваших тестовых проектов. Обратите внимание, что вы уже можете создавать свои тестовые проекты. Я не был из-за ксамарина. Формирует проект IOS, будучи сборкой с задачей «Xamarin.ios».

Ваш, вероятно, в конечном итоге выглядит что-то подобное:

- task: DotNetCoreCLI@2
  displayName: 'Build Test Projects...'
  inputs:
    projects: '**/*.Tests.csproj'

Это следующая задача, которая устанавливает глобальный инструмент, может технически прийти первым. Как я уже говорил, я изо всех сил пытался получить это, чтобы вообще работать, поэтому, как только у меня была последовательность задач, которые работали, я оставил ее в покое:). Эта задача просто использует задачу «командной строки» и устанавливает глобальный инструмент для создания отчетов нашего кода (Мы устанавливаем его здесь, но используйте его позже):

- task: CmdLine@2
  displayName: 'Install Global Tools...'
  inputs:
    targetType: 'inline'
    script: |
      dotnet tool install -g dotnet-reportgenerator-globaltool
  continueOnError: true

Хорошо, теперь давайте запустим наши тесты. Этот шаг снова использует «.net Core «Задача, с командой« Test ». Обратите внимание, что мы говорим ей публиковать результаты теста, но мы также добавляем пользовательский аргумент, который должен собрать метрики покрытия кода (что важно для нашего следующего шага):

- task: DotNetCoreCLI@2
  displayName: 'Execute Tests...'
  inputs:
    command: 'test'
    projects: '**/*.Tests.csproj'
    publishTestResults: true
    arguments: '--collect:"XPlat Code Coverage"'

Тесты RAN и результаты опубликованы. Теперь нам нужно сделать эти результаты покрытия кода и сделать что-то с тем. Это заняло некоторое время, чтобы выяснить, потому что не очевидно, где эти метрики публикуются. Я наконец нашел их в каталоге TEMP агента, который вы увидите, на ссылке на следующий шаг YAML. Опять же, мы используем задачу «командной строки», чтобы выполнить глобальный генератор отчетов, который мы установили ранее, прохождение вдоль местоположения файла результатов, созданных с предыдущего шага, с местоположением там, где мы хотим, чтобы соответствующий вывод сохранен вместе с Типы отчетов:

- task: CmdLine@2
  displayName: 'Execute Code Coverage ReportGenerator...'
  inputs:
    targetType: 'inline'
    script: |
      reportgenerator "-reports:$(Agent.TempDirectory)/**/coverage.cobertura.xml" "-targetdir:$(System.DefaultWorkingDirectory)/coveragereport" "-reporttypes:HtmlInline_AzurePipelines_Dark;Cobertura;Badges"
  continueOnError: true

Она, хорошо, Таким образом, у нас есть результаты, созданные в этом tarcentdir На предыдущем шаге YAML, теперь как мы «публикуем» это на Azure DEVOPS?

Мы можем использовать задачу «Публикация Code Coverage» для этого, с некоторыми основными настройками — инструмент покрытия кода, «Cobertura», а где находится этот файл XML.

- task: PublishCodeCoverageResults@1
  displayName: 'Publish Code Coverage Results...'
  inputs:
    codeCoverageTool: 'cobertura'
    summaryFileLocation: '$(System.DefaultWorkingDirectory)/coveragereport/Cobertura.xml'

Я не очень копаюсь в «Cobertura» здесь, так как я не знаю много об этом. Я поставил эти задачи вместе из разных источников, и это был упомянутый повторяющийся инструмент, поэтому я использовал его. Он отлично работает, поэтому у меня нет причин беспокоиться об этом.

С любой удачей и единой сборкой (в отличие от моих 30-ish пострадавших от пострадавших, чтобы получить эту работу), вы будете «получить» две вкладки на странице создания результатов создания двух вкладок. Резюме, которая имеет по умолчанию, а затем «тесты» и «Code Covanage». Вы отметите, что на следующем скриншоте у меня есть «выпуски», а также потому, что эта сборка фактически проходила через выпускной трубопровод. Вы можете или не можете, также иметь эту вкладку на любой странице результата сборки.

Переверните на вкладку «Тесты», вы должны увидеть результаты определенного пробега тестов.

И, наконец, вкладка «Code Coverage», которая является встроенным отчетом HTML (она не совсем следит за вашим темом Azure DevOps), а затем результаты покрытия для каждого файла в ваших проектах, с выпуском для пространств имен:

И, конечно, мы могли бы сидеть здесь и утверждать, что у меня недостаточно испытаний, или достаточно тестового покрытия — но это действительно не точка этой статьи? Теперь, когда я знаю свои номера, я могу следить за ними и увеличить их.

Спасибо за чтение, надеюсь, это поможет кому-то!

Оригинал: «https://dev.to/calvinallen/running-your-test-suite-in-azure-devops-on-a-mac-build-agent-and-publishing-the-results-2ogo»