Created
October 13, 2017 05:36
-
-
Save npu3pak/8504f79a3c8a5eae18c0a34b8d49dc53 to your computer and use it in GitHub Desktop.
Запуск модульных тестов XCTest из консоли
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Скрипт для автоматического юнит-тестирования iOS-проектов | |
# ТРЕБОВАНИЯ: | |
# Требуется наличие гема xcpretty (https://github.com/supermarin/xcpretty) | |
# Установка: sudo gem install xcpretty | |
# РЕЗУЛЬТАТ: | |
# В результате выполнения формируется каталог, имя которого содержит дату и время запуска скрипта REPORT_PATH, который содержит | |
# - zip-архив с результатами выполнения скрипта в родном формате XCode | |
# - log-файл, содержащий полный консольный вывод сборки выполнения тестов | |
# - xml-файл, содержащий отчет в формате JUnit. В случае ошибок файл будет пуст | |
# - html-файл, содержащий отчет в удобном для чтения виде. В случае ошибок файл будет пуст | |
PROJECT_NAME="" | |
SCHEME="" | |
WORKSPACE_NAME="${PROJECT_NAME}.xcworkspace" | |
DEVICE="platform=iOS Simulator,name=iPhone 8" | |
DATE=`date '+%Y-%m-%d_%H.%M.%S'` | |
# Корневой каталог, в котором будут накапливаться тесты | |
REPORT_PATH="./test_reports/${DATE}" | |
# Временный каталог, в котором будет отчет о тестировании в родном формате XCode | |
TEMP_XCODE_REPORT_PATH="${REPORT_PATH}/XCTest" | |
# ZIP-архив с отчетом в родном формате XCode | |
XCODE_REPORT_ZIP="${REPORT_PATH}/${PROJECT_NAME}_${SCHEME}_${DATE}.zip" | |
# Отчет о сборке | |
BUILD_LOG_NAME="${REPORT_PATH}/${PROJECT_NAME}_${SCHEME}_${DATE}.log" | |
# Отчет о тестировании в формате HTML. Нужно разослать заинтересованным лицам. | |
HTML_REPORT_NAME="${REPORT_PATH}/${PROJECT_NAME}_${SCHEME}_${DATE}.html" | |
# Отчет о тестировании в формате JUnit. Можно прицепить к Jenkins | |
JUNIT_REPORT_NAME="${REPORT_PATH}/${PROJECT_NAME}_${SCHEME}_${DATE}.xml" | |
# Удаляем старый отчет, если он есть | |
rm -f -d -r "${REPORT_PATH}" | |
# Создаем каталог | |
mkdir ${REPORT_PATH} | |
# Запускаем тест | |
xcodebuild test -workspace ${WORKSPACE_NAME} -scheme ${SCHEME} -destination "${DEVICE}" -resultBundlePath "${TEMP_XCODE_REPORT_PATH}" \ | |
| tee ${BUILD_LOG_NAME} \ | |
| xcpretty --report html --output ${HTML_REPORT_NAME} --report junit --output ${JUNIT_REPORT_NAME} | |
# Сохраняем код результата тестирования | |
STATUSCODE=${PIPESTATUS[0]} | |
# Архивируем отчет XCode | |
zip -rX ${XCODE_REPORT_ZIP} ${TEMP_XCODE_REPORT_PATH} | |
# Удаляем временный каталог | |
rm -f -d -r "${TEMP_XCODE_REPORT_PATH}" | |
# Возвращаем код результат тестирования | |
exit ${STATUSCODE} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment