Как инструментам покрытия кода нравится NCover, знают, какие части кода выполнялись и каковы части не были?
Вот техническая статья о Как реализовать инструменты тестового покрытия для произвольных языков .
Моя компания создает семейство инструментов для покрытия тестов для Java, C #, C ++, PHP, COBOL, PLSQL, ... на основе этого принципа.
Цитата прямо из NCover FAQ : NCover сообщает процент ветвей в коде, которые были выполнены в ходе вашего автоматического тестирования. Это достигается за счет инструментирования исходного кода в каждой ветке и записи «хитовых» точек в файл. Эти «хит-пойнты» затем сравниваются с общим количеством возможных «попаданий».
Это требует, чтобы вы запускали тесты один раз с включенным анализом покрытия кода, а затем просто подсчитывали количество охваченных блоков (то есть блоков области видимости) и сравнивали с общим количеством блоков в проект (ы), которые вы тестируете.
Основная причина заключается в том, что если покрывается каждая возможная комбинация кодовых блоков, покрываются все кодовые пути 1 . Главный аргумент против придания слишком большого значения числам покрытия кода заключается в том, что «простые» блоки, такие как геттеры и сеттеры, которые не дают реального значения (и вряд ли могут пойти не так ...), считаются так же, как и более подверженные ошибкам блоки кода .
1) Как отметил Ира Бакстер в комментарии, предыдущая формулировка этого предложения была неправильной. Пожалуйста, прочтите комментарии, чтобы обсудить это.