#unit-testing #continuous-integration #code-coverage
#модульное тестирование #непрерывная интеграция #покрытие кода
Вопрос:
Мы просто начинаем играть с настройками, thresholds
когда я запускаю свой coverage
, пытаясь заставить нашу команду применять выделенные пороговые стандарты. Мой вопрос заключается в следующем, есть ли необходимость в отдельных tests
и coverage
шагах? Мне кажется, что они делают точно то же самое? Я думал о том, чтобы объединить эти два шага в один tests-coverage
шаг, имеет ли это смысл?
Ответ №1:
Одна из причин раздельного запуска тестов и покрытия заключается в том, что измерение покрытия требует изменения программы для поддержки сбора информации о покрытии.
В Java и Jacoco, и Cobertura изменят байт-код файлов класса, чтобы добавить инструкции для записи покрытия. В C , чтобы использовать GCov для измерения покрытия, вы компилируете двоичные файлы с флагами, отличными от тех, которые использовались для создания двоичных файлов выпуска.
Поэтому имеет смысл запускать тесты с артефактами выпуска, чтобы получить уверенность в том, что артефакты выпуска ведут себя правильно. Затем измерить покрытие в отдельном запуске с использованием инструментальных артефактов.
Конечно, можно предположить, что артефакты с включенным покрытием будут функционально эквивалентны артефактам выпуска. Следовательно, запускать тесты дважды не требуется. Это зависит от вашего (и ваших компаний) отношения к риску, и вы можете решить запускать тесты дважды (с покрытием и без него) или один раз с включенным покрытием.
Комментарии:
1. спасибо за это объяснение, которое, несомненно, проливает некоторый свет на тему, спасибо.