Итак, ты уже разобрался с глобальной конфигурацией, валидацией настроек и накодил свой степ. Пришло время его протестировать (а можно было и начать с тестов, кстати).
Есть два основных способа тестирования плагинов. В зависимости от выполняемых функций, можно протестировать плагин как отдельную сущность или в контексте работающего инстанса Jenkins. Для первого способа нам понадобятся моки. Много моков. Билд степу требуется много всякого контекста для выполнения - глобальные настройки Jenkins и плагина, настройки самого степа, переменные окружения и т.п. Вот примерный список:
Дальше нужно настроить возвращаемые моками значения и можно выполнять наш степ:
Этот способ близок к юнит-тестам - выполняется быстро, тестируется работа отдельных классов/методов. Его недостаток в том, что для проверки некоторых случаев требуется много первоначальной настройки.
Иногда лучше пожертвовать скоростью в пользу простоты и написать интеграционный тест. Для этого есть jenkins-рула, которая представляет собой конфигурируемый in-memory инстанс Jenkins. Тот же тест с использованием этой рулы будет выглядеть так:
Как видишь - никаких моков, честный Jenkins, честная джоба в нём, честный билд со всем окружением. Jenkins-рула берёт на себя заботу обо всём окружении и код получается лаконичней, но выполняется это всё ощутимо дольше. Как всегда, лучшим вариантом является комбинирование этих подходов в зависимости от тестируемой функциональности.
comments powered by Disqus