Я только недавно начал использовать Непрерывную интеграцию с VSTS и настроил конвейер, который включает в себя задачу «Visual Studio Test».
В рамках задачи есть возможность выполнить сканирование покрытия кода как часть теста.
Чтобы гарантировать, что мое покрытие кода охватывает только МОЙ код, и а) создали файл .RunSettings
, включающий только генерируемые мной сборки, и б) есть некоторые части кода с атрибутом [ExcludeFromCodeCoverage]
.
Теперь, когда выполняется Analyze Code Coverage
из Visual Studio (2017 Enterprise, 15.7.4), все работает так, как я ожидал, анализируется только моя сборка, а код, который я исключил, ошибается.
Однако при запуске конвейера VSTS такие ограничения не применяются, и тестируются ВСЕ сборки и ВСЕ код, включая специально исключенный код, что приводит к значительному снижению возраста покрытия кода%.
Не уверен, куда идти, так что надеемся, что сообщество S / O может помочь.
Обновление - используется файл RunSettings
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<!-- Configurations for data collectors -->
<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>
<Include>
<ModulePath>.*\.dll$</ModulePath>
</Include>
<Exclude>
<ModulePath>.*Tests.dll$</ModulePath>
<ModulePath>.*moq.dll$</ModulePath>
</Exclude>
</ModulePaths>
<UseVerifiableInstrumentation>False</UseVerifiableInstrumentation>
</CodeCoverage>
</Configuration>
</DataCollector>
</DataCollectors>
</DataCollectionRunSettings>