Я работаю над проектом, который имеет много устаревшего кода, который не покрывается испытаниями.
Можно ли настроить сервер интеграции для проверки того, что все новые коммиты имеют минимальное количество тестов (например, покрытие составляет > 70%)?
По сути, я вижу два варианта:
- Как-то настроить сервер CI для сбоя сборки, когда совершенные изменения не охватываются модульными тестами. Это гарантирует, что каждый фрагмент нового кода будет иметь тесты и что тесты для устаревшего кода будут увеличиваться с каждым изменением.
- Установите порог покрытия для всего проекта и не выполните сборку, если процент покрытия уменьшается после фиксации. Проблема заключается в том, что если я удалю класс, содержащий 100 инструкций, и добавлю новый класс с 50 инструкциями, процент покрытия будет расти без меня, когда я буду писать какие-либо тесты.
Мне нравится вариант 1, потому что он заставляет изменения в устаревшем коде тестироваться модулем. Это должно увеличить общий охват тестирования.
Сейчас мы используем Jenkins в качестве нашего CI-сервера и JaCoCo для тестирования. Maven используется для построения проекта, а SVN - наш основной источник контроля.