Активный тестовый запуск был прерван. Причина: - PullRequest
0 голосов
/ 06 сентября 2018

Я пытаюсь добавить файл .runsettings, чтобы исключить тестовые проекты из вычислений покрытия кода.Все работает нормально, пока я не добавляю раздел DataCollector, затем я получаю сообщение об ошибке «Активный тестовый запуск был прерван. Причина:» (я действительно хотел бы, чтобы они дали мне причину)

Я снял свойФайл .runsettings до минимума, если я удаляю его, он работает нормально, но не собирает информацию о покрытии кода, если я включаю его, он регистрирует эту ошибку в окне вывода и не возвращает информацию о покрытии кода.Если я не использую файл .runsettings, он запускается без ошибок и возвращает информацию о покрытии кода.

Я использую VS 2017 15.8.2 (также пробовал 15.9.0 Preview 1.0), тесты nUnit.

<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>
        <ModulePaths>
          <Include></Include>
          <Exclude></Exclude>
        </ModulePaths>

        <!-- We recommend you do not change the following values: -->
        <UseVerifiableInstrumentation>True</UseVerifiableInstrumentation>
        <AllowLowIntegrityProcesses>True</AllowLowIntegrityProcesses>
        <CollectFromChildProcesses>True</CollectFromChildProcesses>
        <CollectAspDotNet>False</CollectAspDotNet>

      </CodeCoverage>
    </Configuration>
  </DataCollector>

1 Ответ

0 голосов
/ 23 января 2019

Если вы используете пользовательские настройки для покрытия кода, мы рекомендуем вам придерживаться следующих разделов

<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>.*nunit.*</ModulePath>
              </Exclude>
           </ModulePaths>
           <UseVerifiableInstrumentation>True</UseVerifiableInstrumentation>
           <AllowLowIntegrityProcesses>True</AllowLowIntegrityProcesses>
           <CollectFromChildProcesses>True</CollectFromChildProcesses>
           <CollectAspDotNet>False</CollectAspDotNet>
           <Functions>
              <Exclude>
                 <Function>^std::.*</Function>
                 <Function>^ATL::.*</Function>
                 <Function>.*::__GetTestMethodInfo.*</Function>
                 <Function>.*__CxxPureMSILEntry.*</Function>
                 <Function>^Microsoft::VisualStudio::CppCodeCoverageFramework::.*</Function>
                 <Function>^Microsoft::VisualStudio::CppUnitTestFramework::.*</Function>
                 <Function>.*::YOU_CAN_ONLY_DESIGNATE_ONE_.*</Function>
                 <Function>^__.*</Function>
                 <Function>.*::__.*</Function>
              </Exclude>
           </Functions>
           <Attributes>
              <Exclude>
                 <Attribute>^System.Diagnostics.DebuggerHiddenAttribute$</Attribute>
                 <Attribute>^System.Diagnostics.DebuggerNonUserCodeAttribute$</Attribute>
                 <Attribute>^System.Runtime.CompilerServices.CompilerGeneratedAttribute$</Attribute>
                 <Attribute>^System.CodeDom.Compiler.GeneratedCodeAttribute$</Attribute>
                 <Attribute>^System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute$</Attribute>
                 <Attribute>^Microsoft.VisualStudio.TestPlatform.TestSDKAutoGeneratedCode.*</Attribute>
              </Exclude>
           </Attributes>
           <PublicKeyTokens>
              <Exclude>
                 <PublicKeyToken>^B77A5C561934E089$</PublicKeyToken>
                 <PublicKeyToken>^B03F5F7F11D50A3A$</PublicKeyToken>
                 <PublicKeyToken>^31BF3856AD364E35$</PublicKeyToken>
                 <PublicKeyToken>^89845DCD8080CC91$</PublicKeyToken>
                 <PublicKeyToken>^71E9BCE111E9429C$</PublicKeyToken>
                 <PublicKeyToken>^8F50407C4E9E73B6$</PublicKeyToken>
                 <PublicKeyToken>^E361AF139669C375$</PublicKeyToken>
              </Exclude>
           </PublicKeyTokens>
          </CodeCoverage>
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>

Поскольку вы запускаете тест на основе nUnit, я добавил раздел, чтобы исключить nUnit dll из покрытия.

Другие разделы, которые я добавил:

  • Определенные атрибуты, которые мы исключаем, например, DebuggerHiddenAttribute, CompilerGeneratedAttribute и т. Д.
  • Сборки, подписанные определенными токенами открытого ключа, обычно используемыеMicrosoft
  • Некоторые стандартные функции (библиотека) C ++, например, std, ATL и т. Д.

Поскольку мы выполняем профилирование во время выполнения, они обычно приводят к ошибкам, которые иногда приводят к сбоям.

Для получения дополнительной информации о настройке параметров выполнения покрытия, пожалуйста, следуйте https://docs.microsoft.com/en-us/visualstudio/test/customizing-code-coverage-analysis?view=vs-2017

...