Использование JUnit, Maven и Hudson / Jenkins для интеграционных тестов - PullRequest
2 голосов
/ 25 февраля 2012

Мы собираемся использовать сервер сборки Hudson/Jenkins как для сборки наших серверных приложений (просто вызов maven), так и для запуска интеграционных тестов. Мы собираемся подготовить 3 Hudson/Jenkins задания: для сборки, развертывания и запуска интеграционных тестов, которые вызывают друг друга в этом порядке. Все эти задания (сборка, развертывание, интеграционные тесты) будут выполняться ночью.

Интеграционные тесты написаны с JUnit и вызываются с помощью mvn test (который будет вызываться заданием "test" Hudson/Jenkins по очереди). Так как они требуют, чтобы сервер был запущен и работал, мы должны выполнить эту задачу «развертывания».

Имеет ли это смысл? Есть ли какой-либо специальный сервер для развертывания приложения и запуска тестов, или Hudson/Jenkins для этого подойдет?

Ответы [ 2 ]

6 голосов
/ 26 февраля 2012

Это определенно имеет смысл, в основном вы имеете в виду конвейер сборки.Существует Jenkins-плагин , помогающий визуализировать проекты в восходящем / нисходящем направлении (вы создаете новое представление конвейера в jenkins).

Что касается развертывания серверного компонента, это зависит от того, чтотехнология / стек, на котором вы работаете.Например, вы можете написать сценарий, который развертывает приложение в тестовой среде, используя шаг пост-сборки в jenkins.

Другой вариант - использовать плагин maven для развертывания приложения.Вы можете отделить этап развертывания в профиле и запустить только цель развертывания на этапе развертывания и т. Д.

В основном вариантов много, но идея конвейера сборки имеет большой смысл.Чтобы прочитать о сборочных конвейерах и связанных с ними темах, я бы предложил взглянуть на Непрерывное развертывание .

Для получения дополнительной информации, касающейся Jenkins, посмотрите это видео .

Имеет ли это смысл?Есть ли какой-нибудь специальный сервер для развертывания приложения и запуска тестов, или Хадсон / Дженкинс подходит для этого?

Вы можете запустить приложение на том же сервере, что и Дженкинс, но более ли это имеет смысл, зависит отприложение.Если это сильно зависит от конкретной настройки сервера, лучшим выбором может быть запуск сервера в виртуальной машине, а также настройка в системе контроля версий.Есть много инструментов, которые помогут автоматизировать это, у вас на макушке головы Кукольный , Шеф-повар и Бродяга

2 голосов
/ 27 февраля 2012

В зависимости от технологии вашего сервера, вы можете сделать все это в одном проекте Hudson, выполнив интеграционные тесты, используя плагин Maven Failsafe вместо Surefire.

Это позволяет запускать и развертывать до выполнения интеграционных тестов и завершать работу сервера после их завершения. Это также позволяет вам отделить интеграционные тесты от юнит-тестов.

Для приложений Java EE вы можете выполнить шаги запуска / развертывания / остановки, используя Cargo , или использовать встроенный Jetty, содержащий и подключаемый модуль Jetty Maven .

...