vstest.console.exe генерирует покрытие только для Moq.dll

Я пытаюсь создать отчет о покрытии кода с помощью vstest.console.exe. Я также использую файл .runsettings и передаю его в качестве параметра.

Что бы я ни пытался сделать, он генерирует отчет о покрытии только для moq.dll.

Ниже я делюсь полным текстом параметров команды, которую я выполняю, а также содержимым файла .runsettings. Есть идеи, где я делаю что-то не так?

Команда:

vstest.console.exe "C: \ Xyz.Tests \ bin \ Debug \ netcoreapp2.0 \ Xyz.Tests.dll" / InIsolation / EnableCodeCoverage /settings:CodeCoverage.runsettings

Содержание файла CodeCoverage.runsettings:

<RunSettings>
<DataCollectionRunSettings>
  <DataCollectors>
    <DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" enabled="false">
      <Configuration>
        <CodeCoverage>
        </CodeCoverage>
      </Configuration>
    </DataCollector>
  </DataCollectors>
</DataCollectionRunSettings>
</RunSettings>

Изображение сгенерированного отчета о покрытии кода:  введите описание изображения здесь


person Nazim    schedule 06.02.2018    source источник


Ответы (1)


Я столкнулся с таким же поведением, но, к счастью, нашел решение:

Откройте задачу Visual Studio Test и:

  • Снимите флажок Code coverage enabled
  • Поместите --collect:"Code Coverage" в другие параметры консоли
  • Отредактируйте файл проекта .csproj, содержащий проверенные классы и:

    Добавьте <DebugType>full</DebugType> в раздел <PropertyGroup>

    Чтобы избежать использования moq.dll в результатах охвата кода:

    Добавьте <ModulePath>.*moq.dll</ModulePath> в раздел <ModulePaths> -> <Exclude> файла .runsettings.

    Вот мои .runsettings

    <?xml version="1.0" encoding="utf-8"?>
    <RunSettings>
      <RunConfiguration>
        <MaxCpuCount>0</MaxCpuCount>
      </RunConfiguration>
      <DataCollectionRunSettings>
        <DataCollectors>
          <DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
            <Configuration>
              <CodeCoverage>
                <!-- Match assembly file paths: -->
                <ModulePaths>
                  <Include>
                    <ModulePath>.*\.dll$</ModulePath>
                    <ModulePath>.*\.exe$</ModulePath>
                  </Include>
                  <Exclude>
                    <ModulePath>.*moq.dll</ModulePath>
                    <ModulePath>.*CPPUnitTestFramework.*</ModulePath>
                    <ModulePath>.*TestAdapter.*</ModulePath>
                  </Exclude>
                </ModulePaths>
              </CodeCoverage>
            </Configuration>
          </DataCollector>
        </DataCollectors>
      </DataCollectionRunSettings>
    </RunSettings>
    

    И, пожалуйста, ознакомьтесь с https://developercommunity.visualstudio.com/content/problem/92905/net-core-unit-testing-code-coverage.html ссылка

    person Alexandr    schedule 12.02.2018
    comment
    Спасибо, Alxander, это решение сработало для меня. Кажется, самая важная часть - это добавление ‹DebugType› full ‹/DebugType› в проект. - person Nazim; 14.02.2018