Ошибка покрытия кода VSTS?

Кто-нибудь сталкивался с этой "ошибкой" покрытия кода VSTS?" Есть ли у вас какие-либо предложения?

Я выполняю анализ покрытия кода с помощью Visual Studio, что, как правило, является простой задачей с включенными инструментами. Однако у меня есть проблема, которую я не могу преодолеть. Допустим, у меня есть сборки A, B, C и D, и я пометил их все для анализа покрытия. Я запускаю тесты, смотрю на результаты и нахожу отчет, который содержит A, B и C, но не D. Я исследую и обнаруживаю, что никакие тесты на самом деле не выполняют какой-либо код в D (скажем, это внешний интерфейс asp.net и Я пока не использую тестирование пользовательского интерфейса). Поскольку нет тестов для D, из-за чего D отсутствует в отчете, общий процент покрытия кода и «неохваченные блоки» неверны.

Кто-нибудь знает, как я могу сделать одно из следующего?

  • Рассчитать общее «количество блоков» в D, чтобы я мог вручную настроить отчет о покрытии, чтобы он был правильным?
  • Получить отчет о покрытии, чтобы автоматически отображать количество непокрытых блоков для сборок, которые инструментированы для покрытия, но вообще не тестировались?

Хотя я хочу, чтобы тестовое покрытие улучшилось, я анализирую отчеты о покрытии, сохраненные в исторические моменты времени в базе кода. Таким образом, я не хочу создавать тест, который просто выполняет хотя бы 1 блок кода в каждой сборке и пересчитывает тестовое покрытие, запуская тесты. Это было бы довольно трудоемким решением чего-то, что кажется простой проблемой.


person JB Brown    schedule 23.09.2008    source источник


Ответы (1)


Я столкнулся с этим один раз, это очень раздражает. В моем случае было несколько не охваченных dll, поэтому я в конечном итоге оценил блоки/КБ для нашей кодовой базы, используя информацию о покрытых dll, деленную на их размер. Затем, конечно, чтобы получить количество блоков для непокрытых dll, вы просто умножаете среднее значение на размер dll. Это не самый точный метод, но он дает вам быстрый ориентир, и вы можете определить свою ошибку, рассчитав известные библиотеки DLL и сравнив их с фактическими значениями. Полезно, если у вас есть большое количество вычисляемых сборок.

Конечно, вы можете просто подсчитать LOC (игнорируя комментарии) и вычислить один LOC, примерно эквивалентный блоку. Если я правильно помню, это довольно точно, и поэтому вы должны быть еще ближе.

Единственный известный мне способ заставить отчет о непокрытых сборках — написать тест, который загружает сборку (тесту даже не нужно ничего делать).

person Brian B.    schedule 24.09.2008
comment
Спасибо, я боялся, что не было настоящего исправления, как вы предложили, но вроде как ожидал, что это так. Я надеюсь, что это изменится в VS 10. Если я настрою сборку для покрытия, я ожидаю, что она появится в отчете о покрытии. Сейчас я не могу определить покрытие моей функциональной кодовой базы. - person JB Brown; 25.09.2008
comment
Я только что попался на этом сегодня утром, я очень надеюсь, что они исправят это в VS 2010! Это вводит в заблуждение, если вам говорят, что у вас есть 100% покрытие кода, когда некоторые сборки вообще не покрыты! - person TabbyCool; 28.01.2010