2016-06-30 6 views
8

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

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

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

ответ

1

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

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

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

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

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

Testing with Xcode - Quick Start

Testing with Xcode - Running Tests and Viewing Results

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

enter image description here

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

+0

Я не уверен, что понимаю, как это поможет. В настоящее время у меня есть 2 цели - одна для производительности, одна для тестирования. Я могу запустить один, но я не могу запустить оба. Тест-навигатор показывает не выбранную цель как серый, и мне нужно вручную переключиться на нее, чтобы ее можно было запустить. – rid

+0

Привет. Когда вы сказали «без ручного выбора и запуска отдельных схем», я думал, что вы имеете в виду редактор схем. – tymac

0

Возможно, существует способ достижения желаемого поведения, но это скорее взлом.

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

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

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

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

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