.net основные проекты код покрытия визуальная студия 2017

Я использую Visual Studio Enterprise 2017 для разработки моих основных проектов.net.

Мое решение также имеет некоторые проекты тестирования модулей, и я хочу просмотреть текущее покрытие кода.

Когда я нажал Test → Анализ покрытия кода → Все тесты. Все мои модульные тесты выполнялись, но в результатах покрытия кода он сообщал только о покрытии кода для моих проектов модульных тестов, что для меня не имеет никакого смысла.

Вопрос 1: Вы, ребята, испытываете такую же проблему со мной? Любое решение для этого? Мне также необходимо настроить определение сборки в VSTS для отчета о охвате кода.

enter image description here

Вопрос 2: Также, когда я щелкнул правой кнопкой мыши, чтобы отладить 1 моего модульного теста. Он выполняет ВСЕ мои модульные тесты. Это ошибка в VS2017?

Update1: Я нашел эту тему: https://github.com/Microsoft/vstest/issues/597

Ответы

Ответ 1

Даже с "фиксированной" версией у меня были проблемы (только можно увидеть покрытие кода для тестовых проектов, а не фактические проекты, которые я тестировал). Чтобы обойти проблему, я удалил <DebugType>Full</DebugType> из тестового проекта.

Итак, как резюме:

  1. Добавьте пакетный пакет Microsoft.CodeCoverage(1.0.3) в тестовый проект.

  2. Добавьте <DebugType>Full</DebugType> в файл.csproj в проектах, которые мы хотим увидеть значения покрытия кода (внутри <PropertyGroup> как описано в ссылке gstub vstest).

  3. Запустите единичные тесты.
  4. В "Проводнике тестеров" выберите пройденные модульные тесты, щелкните правой кнопкой мыши → "Анализ покрытия кода для выбранных тестов".
  5. Вы должны увидеть покрытие кода для своих сборок.

Моя настройка (минимальная настройка?)

  • xunit (2.3.1)
  • xunit.runner.visualstudio(2.3.1)
  • Microsoft.NET.Test.Sdk(15.3.0)
  • Microsoft.CodeCoverage(1.0.3)
  • Visual Studio Enterprise 2017 (15.4.1)

Ответ 2

Вы можете попробовать dotCover от Jetbrains. https://www.jetbrains.com/dotcover/features/

dotCover - это инструмент тестирования.NET и инструмент для покрытия кода, который работает прямо в Visual Studio, помогает вам знать, в какой степени ваш код покрывается модульными тестами, предоставляет отличные способы визуализации покрытия кода и готовность к непрерывной интеграции. dotCover вычисляет и сообщает о распространении кода на уровне инструкций в приложениях, ориентированных на.NET Framework, Silverlight и.NET Core.

Он отлично работает с.NET Core и может показывать покрытие кода.

Поддерживает несколько модулей тестирования модулей, а именно MSTest, NUnit, xUnit (все из коробки) и MSpec (через подключаемый модуль).

enter image description here

Ответ 4

Похоже, что они все еще разрабатывают биты инфраструктуры (сборщики данных) перед выпуском. Они якобы близки.

https://github.com/Microsoft/vstest/issues/579

Ответ 6

Ответ JDC помог мне включить мои фактические проекты, но я не мог избавиться от тестовых проектов в отчете о покрытии. Мне удалось это сделать, добавив "CodeCoverage.runsettings" в моем тестовом проекте XUnit со следующим содержимым:

<?xml version="1.0" encoding="utf-8"?>
<!-- File name extension must be .runsettings -->
<RunSettings>
  <DataCollectionRunSettings>
    <DataCollectors>
      <DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
        <Configuration>
          <CodeCoverage>
            <ModulePaths>
              <Exclude>
                <ModulePath>.*\.Tests.dll$</ModulePath>
                <!-- Add more ModulePath nodes here. -->
              </Exclude>
            </ModulePaths>
          </CodeCoverage>
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>

Важная часть здесь - исключить тестовый проект в разделе ModulePaths.