Дженкинс Кобертура (с gcov) — что означает статистика покрытия?

Я сейчас пишу юнит-тесты для Qt проект. Я хотел использовать статистику, представленную в Jenkins через Cobertura плагин (внизу gcov используется для получения статистики).

:~$ gcov -v
gcov 5.4.0 20160609

:~$ gcc -v
gcc version 5.4.0

Однако после того, как я посмотрел на таблицу (см. Ниже), я был очень удивлен, увидев плохое покрытие, особенно условных. Для первого (см. Распределение покрытия по файлам) Я думал, что я на самом деле сделал, так как код имеет только три ifs (каждый с одним условием), и мои тесты охватывают все (проверил это также с помощью отладки, чтобы убедиться). Поэтому я действительно запутался в том, что на самом деле означают эти цифры и как их интерпретировать, чтобы улучшить мои юнит-тесты.

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

Я даже начал думать, что некоторые из плохих результатов могут быть связаны с использованием Qt поскольку это не совсем чистый C ++, и все «дополнения» (слоты, сигналы, файлы MOC и т. д.) могут быть чем-то, что gcov не может справиться должным образом.

0

Решение

Проверка аннотированного списка источников с отображаемой красной / зеленой маркировкой покрытия должна помочь.

Числа внутри цветных полос — это количество строк, следовательно, 47/108 означает, что 47 строк кода из 108 строк, которые контролируются условными обозначениями, имеют покрытие.

Для каждого условия вам нужно как минимум два модульных теста: по одному для каждой ветви.

Если есть && или || в условиях — или где-либо еще (например, логическое выражение) каждая комбинация должна быть выполнена для достижения 100%.

Также не забывайте

a = (j == 0) ? c : d;

требуется (как минимум) два теста!

Также, если вы используете C ++, смотрите Почему gcc 4.1 + gcov сообщает о 100% покрытии филиала, а более новые (4.4, 4.6, 4.8) сообщают о 50% для "р = новый класс;" линия?

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]