Мой текущий проект Ruby on Rails выполняет тестирование через rcov (в частности, релевантность rcov, и у нас довольно высокий стандартный (мы теряем сборку, если имеем покрытие кода ‹ 95%).
Мы используем следующую команду, чтобы проверить это:
rcov_cmd = "rcov --rails --text-summary \
--include #{included_dirs} \
--exclude #{excluded_dirs} \
--aggregate #{coverage_dir}/coverage.data \
--output #{coverage_dir} \
Сегодня я нашел код, который регистрируется зеленым (после запуска) в отчетах rcov. Homever, я могу доказать, что этот код не запускается (я вызываю исключение в начале функции, и мои модульные тесты проходят)
Я провел небольшое исследование и нашел флаг --xrefs для rcov, который, как я думал, добавит всех вызывающих абонентов для каждой строки в отчетах rcov.
Я изменил команду rcov на:
rcov_cmd = "rcov --rails --text-summary --xrefs \
--include #{included_dirs} \
--exclude #{excluded_dirs} \
--aggregate #{coverage_dir}/coverage.data \
--output #{coverage_dir} \
(обратите внимание на добавленный флаг --xrefs
).
Вместо дополнительной информации о телефонном звонке я увеличиваю покрытие тестами с 96% до 48%.
Изменяет ли --xrefs тип анализа, как это делает rcov? (Я думал, что он просто соберет информацию о месте вызова). Чем это отличается/лучше от первой команды? (Я видел падение покрытия юнит-тестами, если есть сбой юнит-теста, и я знаю, что процент покрытия может упасть, если в прогоне есть ошибка, но мне это кажется хорошим)
--callsites
и без--xrefs
определить, действительно ли это включенная информация о звонках вызывает разницу? Можно немного сузить проблему. - person Shadwell   schedule 18.08.2010