Réponses:
Dans votre cible principale, vous devez définir l' Enable Testability
option de construction sur Oui.
Selon le commentaire de @earnshavian ci-dessous, cela ne doit être utilisé que sur les versions de débogage conformément aux notes de publication d'Apple: "Le paramètre de génération Activer Testability ne doit être utilisé que dans votre configuration de débogage, car il interdit les optimisations qui dépendent de la non-exportation de symboles internes depuis l'application ou le framework " https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-SW326
@testable
) mais doivent être soumis à l'App Store? Si Enable Testability
c'est juste pour les versions de débogage, quel est le moyen de contourner cela? Dois-je extraire mon code de test pour la publication?
Dans mon cas, j'ai utilisé une configuration de construction personnalisée pour les tests (appelée Test
) et également en cocoapods
tant que gestionnaire de dépendances
J'ai dû ajouter les lignes suivantes à la fin de mon Podfile
pour activer la testabilité
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
Par défaut cocoapods
ensembles ENABLE_TESTABILITY
à YES
seulement Debug
builds
Assurez-vous que vous avez correctement défini vos cases à cocher sous votre modèle d'application. Vous DEVEZ DÉCHARGER vos cibles de test pour la construction d'archives.
Pour ceux d'entre vous qui rencontrent cela uniquement lors de l'exécution de Xcode Profiler: basculez la configuration de la construction du profil dans la gestion de votre schéma vers celle qui a activé la testabilité - et ce serait le débogage dans la plupart des cas:
C'est probablement parce que votre objectif principal Enable Testability
est défini sur NO
. Vous devez le définir YES
dans le schéma de débogage (qui est utilisé pour exécuter vos tests).
Si vous utilisez Carthage, ce problème peut être causé par l'importation de frameworks avec @testable
, car ils sont générés avec un schéma de version.
La plupart du temps, il est déconseillé d'importer des frameworks avec ce préfixe, vous pouvez donc l'éviter. Si vous ne pouvez pas, vous devriez Enable Testability
dans le schéma de publication des frameworks. https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-SW326
J'ai commencé à avoir cette erreur lors de l'exécution de tests avec Bitrise.
Contrairement à d' autres utilisateurs dit, ce ne sont pas par Target
base ou par Schema
base, il est par Configuration
base. Sélectionnez Target
-> Build Settings
onglet -> recherchez testability
-> Activez-le sur la configuration que vous utilisez .
Veuillez noter qu'Apple recommande de l'activer sur la configuration que vous utilisez pour le débogage, pas pour l'AppStore.
Si vous essayez de tester le framework:
Allez à la cible de test -> Phase de construction -> Phase de création de nouveaux fichiers de copie -> Choisissez des cadres -> Ajouter tous les cadres utilisés de manière récursive
Si par hasard vous avez
install! 'cocoapods',
generate_multiple_pod_projects: true,
incremental_installation: true
Ensuite, c'est la façon de le faire.
# 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
Cela ne s'est pas produit dans mes projets avant Xcode 8, mais après la mise à niveau vers Xcode 8, cela m'a rendu perplexe.
Les réponses publiées ici n'ont pas résolu mes problèmes. Pour moi, j'ai juste abandonné ces tests car ils ne sont pas nécessaires. Alors décochez les boutons de test: