Xcode / iOS: модульные тесты, схемы и конфигурации

Мой проект iOS имеет пять схем: локальное развитие, интеграция, качество, демонстрация и производство. Каждая схема использует различную конфигурацию для управления такими вещами, как частота опроса сети, конечные точки API, аналитика и т. Д.

Аналогично, у нас есть пять соответствующих целей: локальное развитие, интеграция, качество, демонстрация и производство. Каждая цель имеет несколько пользовательских настроек сборки, которые содержат ключи API, числовые значения для синхронизации и т. Д.

В файле Info.plist нашего приложения используются переменные приложения, такие как ${SOME_ENDPOINT_URL} для рисования соответствующих пользовательских настроек сборки.

Чтобы получить переменные, я делаю что-то вроде следующего:

 [[[NSBundle mainBundle] infoDictionary] valueForKey:@"Some Endpoint URL"] 

Это соответствует пользовательской настройке сборки, например:

 "Some Endpoint URL" = ${SOME_ENDPOINT_URL} 

Теперь я смотрю, как правильно настроить проект для выполнения модульных и логических тестов.

Чтобы построить тесты, чтобы определить, правильно ли настроены среды, я не уверен, что такое лучшая практика.

  • Правильно ли создавать пять дополнительных целевых показателей для каждой среды?
  • Или лучше переопределить параметр «Запустить действие» для тестового компонента для каждой схемы и предоставить что-то вроде аргумента, чтобы указать, на какой схеме мы смотрим?
  • Существуют ли какие-либо существующие ссылки для настройки модульных и логических тестов для проектов iOS с несколькими средами? Сложность этого проекта, по-видимому, превышает объем большинства документов.

One Solution collect form web for “Xcode / iOS: модульные тесты, схемы и конфигурации”

Вот что я делаю.

Info.plist

  • Создайте главный файл Info.plist
  • Напишите сценарий запуска (Shell Script) для каждой схемы для создания Info.plist, зависящего от среды, путем изменения настроек в master Info.plist (используйте PlistBuddy -c)
  • Добавьте сценарий запуска для построения фаз (выше «Скомпилировать источники»)

файл .h

  • Определите параметры конфигурации в файле .h (например, config.h)

     #if defined (CONFIG_FILE) #import CONFIG_FILE #endif 
  • Импортируйте config.h в свой код.

  • Используйте макросы предварительного процессора для каждой схемы, чтобы выбрать целевой файл .h.

     -DCONFIG_FILE=local-env-config.h 
  • Блоки Clang-Format и ColumnLimit 0
  • Ошибка выполнения - нить 1: сигнал SIGABRT - нет выхода консоли
  • Раскадровка readyForSegue
  • Как добавить файл прав в проект XCode 4.5?
  • Локализовать Localizable.strings с Xcode 4.5
  • Как обрабатывать длинные текстовые метки на универсальной раскадровке?
  • Не удается открыть xib в навигаторе проекта
  • Быстрое импортирование существующих файлов iOS в цель OS X в одном проекте
  • Как исправить эту множественную сборку в тесте TestFlight (iTunes Connect)?
  • Как настроить кнопку совместного доступа? xcode
  • Как интегрировать Crashlytics в проект инфраструктуры iOS?
  • Interesting Posts

    Проблема с NSSearchPathForDirectoriesInDomains и постоянными данными

    Я использую UIActivityViewController, но он поворачивает изображения, если я поделился им на Facebook, электронной почте и т. Д.

    CocoaAsyncSocket и данные чтения из сокета

    Xcode linker error-armv7 slice architecture

    главная тема заблокирована на SCNetworkReachabilityGetFlags

    Нельзя назначить свойство: «inputAccessoryView» – свойство get-only

    presentModalViewController из делегата приложения

    iOS – ошибка компоновщика, дубликат символа

    Запрос AFHTTPRequestOperationManager POST завершился неудачно, а сетевое соединение было потеряно (-1005)

    Использование акселерометра и гирометра для отслеживания движения телефона независимо от ориентации

    Как изменить название кнопки «Редактировать / Готово» в UINavigationBar в Swift

    Является ли NSS быстрее, чем NSArray?

    IOS AVPlayer медленное отклонение после потери соединения

    Получить изображение профиля для каждого пользователя разбора iOS swift

    Как определить, было ли приложение повреждено без проверки SignerIdentity?

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.