Я запускаю модульные тесты в своей сборке VSTS (хотя я получаю те же результаты, работая локально в Visual Studio). Я использую файл .runsettings, чтобы настроить игнорирование сборок и т. Д., И эта ссылка связана как с проектом Visual Studio, так и установлена в тестовой задаче VSTS.
Я проверил «Покрытие кода включено» в задаче VsTest, тесты проходят, и покрытие публикуется в VSTS, например:
Когда я загружаю файл .coverage и открываю его в Visual Studio, эти цифры совпадают (как если бы я действительно запускал тесты в Visual Studio локально). Вот результат:
Проблема, с которой я столкнулся, заключается в том, что когда я затем экспортирую этот файл .coverage в xml (поскольку мне нужно обрабатывать эти цифры как часть сборки), я использую следующую команду для этого:
"C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe" analyze /output:out.xml "TST-20180307.7.debug.any cpu.1368.coverage"
Однако, когда я это делаю, общее количество покрытых блоков и общее количество в экспортированном XML-файле не совпадают с таковыми из источника .coverage:
<module name="vstsrestapicommon.dll" path="vstsrestapicommon.dll" id="xxx" block_coverage="95.49" line_coverage="90.85" blocks_covered="678" blocks_not_covered="32" lines_covered="268" lines_partially_covered="1" lines_not_covered="26">
Итак, в основном мы смотрим на один модуль (dll), но Visual Studio и VSTS оба блока отчетов охватываются как 641, но экспортированный xml сообщает то же самое, что и 679.