Могу ли я интегрировать Jenkins и XCTest

Можно ли использовать Jenkins с XCTest?

Существует ruby-скрипт (OCUnit2JUnit -- https://github.com/ciryon/OCUnit2JUnit), который анализирует вывод OCUnit и создает XML-файлы. которые Дженкинс может разобрать.

Есть ли что-то эквивалентное для обработки нового вывода XCTest?

Прямо сейчас использование непрерывной интеграции Apple невозможно.


person Humble Objective-Cer    schedule 09.10.2013    source источник
comment
XCTool имеет поддержку XCTest и отличную историю интеграции с Jenkins.   -  person CodaFi    schedule 10.10.2013
comment
На всякий случай, если кто-то просматривает это в 2018 году, вам следует рассмотреть возможность использования fastlane с действием multi_scan из test_center для автоматизации ваших тестов и получения отчетов junit для тестового издателя Jenkins.   -  person Lyndsey Ferguson    schedule 21.05.2018


Ответы (5)


Два варианта:

1) направьте вывод xcodebuild в xcpretty и используйте форматировщик Junit. Тогда Дженкинс может это опубликовать.

Б) используйте xctool вместо xcodebuild. Xctool имеет встроенный репортер Junit, который вы можете указать для тестов.

Мы сделали и то, и другое, и они оба отлично работают с Дженкинсом.

person plluke    schedule 17.02.2015
comment
@piiluke я не могу запустить симулятор с помощью jenkins. Как ты это сделал ? - person Harish Gupta; 16.02.2017
comment
Командная строка @HarishGupta xcodebuild имеет все необходимое для запуска тестов. Если вы просто хотите запустить сам симулятор (без какого-либо контекста), по какой-либо причине просто запустите приложение, используя сценарий оболочки или AppleScript. - person plluke; 07.03.2017
comment
Спасибо за ответ !! Мои тестовые примеры - это тестовый пример пользовательского интерфейса, для которого требуется запуск симулятора. Поэтому, когда jenkins выполняет тестовый пример, сначала нужно запустить симулятор. - person Harish Gupta; 07.03.2017
comment
@HarishGupta Xcode запускает для вас симулятор с помощью теста xcodebuild. Вам не нужно запускать симулятор. Если вы не используете тест xcodebuild и хотите запустить свой собственный процесс, вы можете использовать xcrun simctl для управления симулятором, но это совсем другой вопрос. Кроме того, если вы используете тест xcodebuild, вам может потребоваться подключиться к ведомому серверу jenkins с использованием JNLP вместо SSH, поскольку в более ранней версии Xcode были проблемы с запуском тестов пользовательского интерфейса, когда агент был через SSH. Тоже совсем другой вопрос. - person plluke; 27.03.2017

Вам нужно добавить фазу сборки сценария оболочки.

Сначала добавьте гем ocunit2junit на машину сборки:

sudo gem install ocunit2junit

Затем добавьте сценарий оболочки фазы сборки и убедитесь, что вы находитесь в каталоге проекта при выполнении сценария:

xcodebuild -workspace yourWorkSpace.xcworkspace -scheme YourTestsScheme -configuration Debug clean test 2>&1 | ocunit2junit

Затем обязательно добавьте действие публикации результатов теста JUnit после сборки в задание Jenkins, настроенное для поиска выходных данных для ocunit2junit: **/test-reports/*.xml

person cynistersix    schedule 07.01.2015

для меня это не работает. также на странице приветствия Github Projekt XCTest не упоминается о поддержке. Так что похоже, что это не поддерживается

person Erik Mueller    schedule 11.02.2015

Я написал инструмент, который анализирует plist-файл TestSummaries из папки Logs/Test и создает XML-файл отчета JUnit: (https://github.com/nacuteodor/ProcessTestSummaries). Сгенерированный отчет должен быть более точным, чем xcpretty.

person TeodorN    schedule 23.05.2016

Это то, что я запускаю в своем проекте Jenkins после установки ocunit2junit на моей машине сборки:

xcodebuild test -scheme <my_scheme> -configuration Debug -sdk iphonesimulator7.0 -destination OS=7.0,name="iPhone Retina (4-inch)" | ocunit2junit

Затем я добавил отчет о результатах теста Publish JUnit в качестве действия после сборки. Сначала был немного ненадежным (создавал только xml-файлы, когда не было действий после сборки), но после запуска сборки непосредственно на моем компьютере для сборки он работает.

person Mark    schedule 18.11.2013
comment
Хм, кажется, ocunit2junit теперь также поддерживает XCTest? stackoverflow.com/a/23256836/797767 - person Mark; 31.10.2014