J'essaie d'utiliser la nouvelle déclaration @testable
de Swift 2 pour exposer mes classes à la cible de test. Cependant, je reçois cette erreur du compilateur:
Intervals
est le module qui contient les classes que j'essaie d'exposer. Comment puis-je me débarrasser de cette erreur?
Dans votre cible principale, vous devez définir l'option Enable Testability
build sur Oui.
Selon le commentaire de @earnshavian ci-dessous, cela ne devrait être utilisé que sur les versions de débogage, conformément aux notes de publication d'Apple: "Le paramètre de génération Enable Testability ne doit être utilisé que dans votre configuration Debug, car il interdit les optimisations dépendant de l'exportation des symboles internes. l'application ou le cadre " https://developer.Apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//Apple_ref/doc/uid/TP40001051-CH1-SW326
Dans mon cas, j'ai utilisé une configuration de construction personnalisée pour les tests (appelée Test
) et aussi cocoapods
en tant que gestionnaire de dépendance.
J'ai dû ajouter les lignes suivantes à la fin de ma Podfile
pour permettre 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
définit ENABLE_TESTABILITY
sur YES
uniquement pour les générations Debug
.
Ceci est probablement dû au fait que votre cible principale Enable Testability
est définie sur NO
. Vous devez le définir sur YES
dans le schéma de débogage (utilisé pour l'exécution de vos tests).
Si vous utilisez Carthage, ce problème peut être causé par l'importation de frameworks avec @testable
, car ils sont construits avec un schéma de publication.
La plupart du temps, il est déconseillé d'importer des frameworks avec ce préfixe afin de l'éviter. Si vous ne le 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
Si vous essayez de tester le framework:
Aller à la cible de test -> Phase de construction -> Phase de création de nouveaux fichiers de copie -> Choisir les frameworks -> Ajouter tous les frameworks utilisés de manière récursive