Ответы:
В вашей основной цели вам нужно установить 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, это меня озадачило.
Ответы, размещенные здесь, не помогли решить мои проблемы. Для меня я просто отбросил эти тесты, так как он не нужен. Поэтому снимите флажки с тестовых кнопок: