Відповіді:
У своїй головній цілі потрібно встановити параметр Enable Testability
збірки на Так.
Згідно з коментарем @earnshavian, наведеним нижче, це слід застосовувати лише для налагоджень на налагодженнях відповідно до приміток випуску яблук: "Налаштування увімкнення збірки Testability слід використовувати лише у вашій конфігурації налагодження, оскільки вона забороняє оптимізації, які залежать від експорту внутрішніх символів з додаток або рамки " 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
зборки
Переконайтеся, що ви правильно встановили прапорці в рамках своєї програми. Ви ДОЛЖНЕ Зняти свої тестові цілі для складання архіву.
Для тих із вас, хто відчуває це лише після запуску 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, це здивувало мене.
Відповіді, розміщені тут, не вирішили моїх проблем. Для мене я просто скинув ці тести, оскільки це не потрібно. Тому зніміть прапорці кнопок тесту: