Различные конфигурации сборки для тестовых схем

Есть ли способ запустить модульные тесты в отладочной сборке и тесты производительности в сборке выпуска без ручного выбора и запуска отдельных схем?

У меня есть модульное тестирование и схема тестирования производительности. В конфигурации теста для схемы модульного тестирования я выбрал отладочную сборку, а для схемы тестирования производительности - сборку выпуска. Если я запускаю каждую схему отдельно, я получаю отладочную сборку и сборку выпуска соответственно.

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

2 ответа

Может быть способ достичь желаемого поведения, но это скорее взлом.

Основная проблема, которую я вижу, - это желаемая конфигурация сборки для тестового действия схемы. Поскольку конфигурация сборки применима ко всем целям в схеме, вам нужно найти способ обмануть Xcode при создании вашей цели с помощью конфигурации Debug и Release. Как говорится, вот идея:

  1. Экспортируйте конфигурацию выпуска для вашей цели в файл xcconfig (xcodebuild -scheme "schemeName" -showBuildSettings >> release.xcconfig и убедитесь, что он содержит только настройки релиза)
  2. Создайте еще одну цель для ваших тестов производительности, которая создает те же исходные файлы
  3. Установите конфигурацию отладки этой новой цели в вышеупомянутый файл xcconfig конфигурации выпуска (это - в основном часть, где мы обманываем Xcode)
  4. Добавьте исходную и вновь созданную цель к действию сборки вашей схемы и добавьте тестовые пакеты (при условии, что они находятся в отдельном тестовом пакете)
  5. Выберите конфигурацию отладочной сборки для тестового действия.

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

Установка немного хрупкая, так как вам нужно добавить новые исходные файлы для обеих целей. Вы должны быть в состоянии автоматизировать процесс, используя скрипт ruby ​​и гем xcodeproj.

Надеюсь, это поможет.

Вы можете использовать разные тестовые пакеты и включать / исключать то, что вы хотите.

Я имею в виду создание собственных пользовательских целей тестирования (связок) и использование Xcode Test Navigator.

Так, например, создание MyUnitBundleTests цель и MyPerformanceBundleTests цель. Это будут два отдельных тестовых "комплекта", где вы решите включить / исключить классы, методы и т. Д.

Тестовый навигатор отображает иерархический список тестовых наборов и связанных с ними классов, методов и т. Д., Включенных в проект.

Можно выборочно включать и отключать тестовые пакеты, классы и методы, щелкнув по элементам управления в списке тестового навигатора Control-Control и выбрав "Включить" или "Отключить" в контекстном меню, тем самым включив или отключив элементы в схеме.

Тестирование с Xcode - Быстрый старт

Тестирование с Xcode - запуск тестов и просмотр результатов

Есть несколько дополнительных интерактивных способов запуска тестов. Xcode запускает тесты в зависимости от того, какие цели тестирования включены и включены в схему. Навигатор тестов позволяет напрямую контролировать, какие цели, классы и методы тестирования включаются, включаются или отключаются в схеме без использования редактора схем.

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

Другие вопросы по тегам