Покрытие кода Visual Studio не соответствует при экспорте в xml

Я запускаю модульные тесты в своей сборке VSTS (хотя я получаю те же результаты, работая локально в Visual Studio). Я использую файл .runsettings, чтобы настроить игнорирование сборок и т. Д., И эта ссылка связана как с проектом Visual Studio, так и установлена ​​в тестовой задаче VSTS.

Я проверил «Покрытие кода включено» в задаче VsTest, тесты проходят, и покрытие публикуется в VSTS, например:

Покрытие кода VSTS

Когда я загружаю файл .coverage и открываю его в Visual Studio, эти цифры совпадают (как если бы я действительно запускал тесты в 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.


person Bradderz    schedule 07.03.2018    source источник


Ответы (1)


отладка | любой процессор | Блоки | 77,51% | 417/538

Это общий результат покрытия кода.

<module name="xxx.dll" path="xxx.dll" id="xxx" block_coverage="78.21" line_coverage="86.32" blocks_covered="445" blocks_not_covered="124" lines_covered="164" lines_partially_covered="2" lines_not_covered="24">

Это просто результат покрытия кода сборки.

Например:

введите описание изображения здесь

Общий покрытый результат равен 57,69%, но покрытый результат classlibrary1.dll равен 31,25%, поэтому результат экспортированного файла xml будет < strong> block_coverage = "31.25" для classlibrary1.dll.

person starian chen-MSFT    schedule 08.03.2018
comment
Спасибо за ответ, я обновил исходное описание, добавив еще несколько деталей. В основном я анализирую одну dll, поэтому сводка в VSTS соответствует цифрам для этой dll в файле покрытия Visual Studio, проблема в том, что когда я экспортирую в xml, эти же цифры dll не совпадают. - person Bradderz; 09.03.2018
comment
@Bradderz Можете ли вы воспроизвести эту проблему с новыми проектами? В таком случае вы можете использовать одни и те же проекты в OneDrive. - person starian chen-MSFT; 09.03.2018