Відповіді:
У своїй головній цілі потрібно встановити параметр 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, це здивувало мене.
Відповіді, розміщені тут, не вирішили моїх проблем. Для мене я просто скинув ці тести, оскільки це не потрібно. Тому зніміть прапорці кнопок тесту: