Аа, вот, что Вы не поняли!
Оки, ща объясню.
Рассмотрим 3 расклада:
1). У нас планируются только автоматизированные API тесты. Все остальные тесты нам либо не нужны (ну, например, проект связан только сервисами и UI у него нет), либо проходятся исключительно мануально и автоматизации этих тестов не предвидится.
2). У нас планируются автоматизированные API тесты и автоматизированные UI тесты, но запускать мы их планируем по отдельности (например, этим занимаются разные команды и / или частота запуска этих тестов будет различна).
3). У нас планируются автоматизированные API тесты и автоматизированные UI тесты и мы планируем запускать их как единый набор тестов, иными словами, логика группировки данных тестов будет реализована не по типу теста, а по тестируемой сущности.
Я сознательно опускаю тут юнит тесты, поскольку слабо представляю себе вариант, чтобы мне потребовалась интеграция юнит тестов с каким бы то ни было другим типом тестов.
Рассмотрим pros & cons SoapUI тестов vs Java (к примеру) тестов.
В SoapUI скорость создания тестов гораздо выше, чем с помощью кода, уж поверьте человеку, который юзал данную тулзу овер 2-х лет Очень много вещей там можно сделать в 3 клика мышкой, особенно в Pro версии. Темп немного падает, когда появляется необходимость в сложных сценариях и скриптовых ассершенах, но таких случаев не более 5% от общей массы.
К примеру, сценарий типа “создаём объект POST запросом, затем проверяем через GET запрос с параметром id объекта, что данный объект появился в базе и его атрибуты соответствуют заданным, затем проверяем через GET запрос, что при запросе всех объектов данного типа данный объект попал в список” пишется в течение 20 мин, из которых 10 уйдёт на конструирование xml для объекта на 1-м шаге.
Единственный значительный недостаток тулзы - необходимость иметь хоть как-то работающий код, поскольку ассершены по существующей xml ставятся в 3 клика, если же xml нету - их приходится писать руками, что значительно замедляет работу. Как альтернативу, можно использовать моки, но их возвращаемые объекты придётся тогда создавать руками, на что тоже будет уходить немало времени, особенно если в объекте много атрибутов.
Теперь вернёмся к нашим сценариям.
1). Тут всё очевидно. Создавать тесты в SoapUI намного проще и быстрее, чем делать это в коде. Реализация CI будет выполнена 1 джобой, запускающей SoapUI тесты через командную строку. При наличии нескольких наборов тестов - возможно создание нескольких джоб или добавление параметра в джобу.
2). Поскольку необходимости в интеграции нет - смысла писать код я не вижу. Реализация CI (при необходимости) в данном случае будет выполнена 2-мя разными джобами, 1 из которых будет запускать SoapUI тесты, а 2-я - UI тесты (к примеру, базирующиеся на вышеупомянутом селениуме).
3). Вот тут как раз появляется необходимость интеграции. Для CI в данном случае я бы использовал связку Maven + TestNG, разбил тесты по категориям (матрицей тип теста (API, UI) - компонент или тип теста (smoke, functional, regression) - компонент), сделал общий логгер на базе того же log4j, добавил в джобу параметры, позволяющие запускать её с определённым набором тестов на базе выбранных значений матрицы или сделал бы несколько джоб с зафиксированными значениями параметров - в зависимости от задач. В этом случае потребность в интеграции и, как следствие, в унификации результатов, перекрывает дополнительные затраты времени, требующиеся на создание API тестов в коде. Разумеется, при достаточном количестве UI тестов. При малом количестве последних проще отказаться от интеграции и использовать вариант 2.