Ответы:
В вашей основной цели вам нужно установить Enable Testabilityопцию сборки на Да.
В соответствии с комментарием @earnshavian ниже, это следует использовать только в отладочных сборках в соответствии с примечаниями к выпуску Apple: «Параметр« Включить сборку тестируемости »следует использовать только в конфигурации отладки, поскольку он запрещает оптимизацию, которая зависит от того, чтобы не экспортировать внутренние символы из приложение или структура " https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-SW326
@testable), но их нужно отправить в App Store? Если Enable Testabilityэто только для отладочных сборок, как обойти это? Должен ли я вытащить свой тестовый код для выпуска?
В моем случае я использовал пользовательскую конфигурацию сборки для тестирования (называемой Test), а также cocoapodsв качестве менеджера зависимостей
Мне пришлось добавить следующие строки в конец моего, Podfileчтобы включить тестируемость
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
if config.name == 'Test'
config.build_settings['ENABLE_TESTABILITY'] = 'YES'
end
end
end
end
По умолчанию cocoapodsнаборы ENABLE_TESTABILITYдля YESтолько для Debugсборки
Убедитесь, что вы правильно установили свои флажки в соответствии со схемой приложения. Вы ДОЛЖНЫ ОТКЛЮЧИТЬ свои тестовые цели для Archive Build.
Для тех из вас, кто испытывает это только после запуска Xcode Profiler: переключите конфигурацию построения профиля в управлении вашей схемой на конфигурацию с включенной тестируемостью, и в большинстве случаев это было бы отладкой:
Вероятно, это потому, что ваша основная цель Enable Testabilityустановлена на NO. Вы должны установить его YESв схеме отладки (которая используется для запуска ваших тестов).
Если вы используете Carthage, эта проблема может быть вызвана импортом фреймворков с помощью @testable, потому что они построены по схеме выпуска.
В большинстве случаев импортировать фреймворки с этим префиксом плохая практика, поэтому вы можете избежать этого. Если вы не можете, вы должны Enable Testabilityв схеме релизов фреймворков. https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-SW326
Я начал получать эту ошибку при запуске тестов с использованием Bitrise.
В отличие от других пользователей , говорит, это не на Targetоснове, или на Schemaоснове, является на Configurationоснове. Выберите Target-> Build Settingsвкладка -> искать testability-> включить его в используемой конфигурации .
Обратите внимание, что Apple рекомендует включить это в конфигурации, которую вы используете для отладки, а не для AppStore.
Если вы пытаетесь протестировать фреймворк:
Перейти к цели тестирования -> Фаза сборки -> Фаза создания новых файлов копирования -> Выбрать рамки -> Добавить все рекурсивно используемые платформы
Если случайно у вас есть
install! 'cocoapods',
generate_multiple_pod_projects: true,
incremental_installation: true
Тогда это способ сделать это.
# generated_projects only returns results if the we run "pod install --clean-install"
# or install a pod for the first time
installer.generated_projects.each do |project|
project.build_configurations.each do |configuration|
configuration.build_settings["ENABLE_TESTABILITY"] = "YES"
end
end
Это не происходило в моих проектах до Xcode 8, но после того, как я обновился до Xcode 8, это меня озадачило.
Ответы, размещенные здесь, не помогли решить мои проблемы. Для меня я просто отбросил эти тесты, так как он не нужен. Поэтому снимите флажки с тестовых кнопок: