Можно ли получить покрытие кода. NET Framework Project, используя покрывало в Azure DevOps? - PullRequest
0 голосов
/ 16 марта 2020

Я легко сконфигурирован, чтобы получить результат покрытия для .NET Core Проектов в Azure DevOps, но не повезло с .NET Framework Проектами.
Так что, я был бы очень рад получить предложение по этому вопросу, потому что сопроводительная документация четко говоря, что мы также можем использовать его для .NET Framework проектов. Этот вопрос похож на мой, но я не нашел там никакого ответа, Можете ли вы использовать Coverlet для получения данных покрытия кода в. NET Framework проекте?

Ответы [ 2 ]

0 голосов
/ 18 марта 2020

Наконец-то я нашел более простое решение. Вот,

  • Добавить <IsTestProject>true</IsTestProject> в файл тестового проекта.

  • Запустить команду dotnet test/dotnet test /p:CollectCoverage=true, находящуюся в месте расположения тестового проекта ( где существует TestProject.csproj)

  • После выполнения команды вы можете получить следующую ошибку:

    Импортированный проект "C: \ Program Files \ dotnet \ sdk \ 3.1.100 \ Microsoft \ VisualStudio \ v16.0 \ WebApplications \ Microsoft.WebApplication.targets "не найден.

  • В файле проекта (который вы хотите для модульного тестирования и получения покрытия кода), измените следующую инструкцию импорта

    This, <Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

    To, <Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" />

Это сработало для меня как локально, так и с Azure DevOps.

Примечание. Не забудьте установить Coverlet.msbuild в свой тестовый проект.

Обновление:

Вышеописанный подход работает только в том случае, если вы не t get ". Microsoft.WebApplication.targets не был найден" ошибка. Комментирование предложенного оператора import приведет к сбою publi sh в конце, что очевидно. Итак, я использовал Coverlet.Console, и он работает без ошибок. Но для использования coverlet.console мне нужен файл TestProject.dll вместо файла проекта (.csproj); поэтому мне пришлось добавить дополнительную задачу сборки для тестового проекта. Здесь - документация по установке и использованию Coverlet.console

Надеюсь, это будет полезно для тех, кто в итоге приземлится здесь.

0 голосов
/ 17 марта 2020

Да, вы можете кодировать данные покрытия из проекта ASP. NET. И это просто, как @riQQ предложил в этой теме .

Следующий контент предназначен для дополнений и воспроизводит ответ @ riQQ в приведенной выше теме.

Подготовил приложение веб-формы и. net модульный тест каркаса, добавлен файл coverlet.runsettings в репозитории, ссылка на контент Опции Coverlet, поддерживаемые интеграцией VSTest :

<?xml version="1.0" encoding="utf-8" ?>
<RunSettings>
  <DataCollectionRunSettings>
    <DataCollectors>
      <DataCollector friendlyName="XPlat code coverage">
        <Configuration>
          <Format>json,cobertura</Format>          
          <Exclude>[coverlet.*.tests?]*,[*]Coverlet.Core*</Exclude> <!-- [Assembly-Filter]Type-Filter -->
          <Include>[coverlet.*]*,[*]Coverlet.Core*</Include> <!-- [Assembly-Filter]Type-Filter -->
          <ExcludeByAttribute>Obsolete,GeneratedCodeAttribute,CompilerGeneratedAttribute</ExcludeByAttribute>
          <ExcludeByFile>../dir1/class1.cs,../dir2/*.cs,../dir3/**/*.cs,</ExcludeByFile> <!-- Absolute or relative file paths -->
          <IncludeDirectory>../dir1/,../dir2/,</IncludeDirectory>
          <SingleHit>false</SingleHit>
          <UseSourceLink>true</UseSourceLink>
          <IncludeTestAssembly>true</IncludeTestAssembly>
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>

Настройка задачи VSTest:

enter image description here

Он может успешно сгенерировать файл покрытия:

Passed   TestMethod1
Results File: D:\a\_temp\TestResults\VssAdministrator_fv-az38_2020-03-17_07_53_28.trx
Attachments:
  D:\a\_temp\TestResults\*******-****-****-****-**********\VssAdministrator_fv-az38 2020-03-17 07_53_18.coverage
Total tests: 1. Passed: 1. Failed: 0. Skipped: 0.
Test Run Successful.

Примечание. Если вы хотите запустить эту сборку на агенте с собственным хостом, вы можете необходимо убедиться, что VS Enterprise установлен, см. «Не удается найти CodeCoverage.exe» на агенте с автоматическим размещением .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...