83 votes

XCTest/XCTest.h ne trouve pas sur d'anciens projets construits dans Xcode 6

J'ai quelques projets que je suis en train de construire avec Xcode 6 Bêta 2. Tous les projets ont un certain type de bibliothèque qui utilise XCTest (Kiwi/XCTest et Specta) que de ne pas construire dans Xcode 6, car XCTest/XCTest.h ne peut pas être trouvé.

fatal error: 'XCTest/XCTest.h' file not found
#import <XCTest/XCTest.h>

J'ai remarqué que XCTest.le cadre n'est plus dans les "Bibliothèques de liens avec des fichiers Binaires" phase de construction de la liste, mais c'est bien parce que quand je créer un nouveau projet avec Xcode 6, il semble que la bibliothèque est liée automatiquement.

Peut-être de certains relevency, mon XCTest qui ont besoin de dépendances sont tous amené par Cocoapods.

Est-ce que je suis pas au courant de cela, j'ai besoin de mettre à jour avec mon projet?

143voto

squarefrog Points 1473

Afin de résoudre ce problème pour tout CocoaPod dépendances vous devez ajouter les éléments suivants à l' FRAMEWORK_SEARCH_PATHS dans toute Pod cible qui nécessite XCTest (par exemple, Kiwi, Specta, FBSnapshotTestCase, etc).

$(PLATFORM_DIR)/Developer/Library/Frameworks

screenshot

Cela vous permettra de référence XCTest dans toutes les dépendances que vous pourriez avoir. Cela peut être corrigé dans une future mise à jour de CocoaPods, ou le Pod vous faites référence, de sorte que vous pouvez le supprimer plus tard.

Il n'est pas préjudiciable à des versions antérieures de Xcode doit être sûr à utiliser.

18voto

Mustafa Points 667

J'ai remarqué que XCTest est disponible pour une cible de test (dans XCode 6). Si vous utilisez l'aide de XCTest pour toute autre cible (pour quelque raison que ce soit), vous verrez l' XCTest.h not found d'erreur.

11voto

deanWombourne Points 26066

@squarefrog a la bonne réponse , mais vous devrez continuer à le faire manuellement à chaque fois que vous mettez à jour votre gousses :(

Si vous ajoutez ceci à votre podfile il va automatiquement ajouter le chemin supplémentaire pour vous. E. g. si vous souhaitez ajouter d' $(PLATFORM_DIR)/Developer/Library/Frameworks de FRAMEWORK_SEARCH_PATHS pour les Specta:

post_install do |installer|
    target = installer.project.targets.find { |t| t.to_s == "Pods-Tests-Specta" }
    if (target)
        target.build_configurations.each do |config|
            s = config.build_settings['FRAMEWORK_SEARCH_PATHS']
            s = [ '$(inherited)' ] if s == nil;
            s.push('$(PLATFORM_DIR)/Developer/Library/Frameworks')
            config.build_settings['FRAMEWORK_SEARCH_PATHS'] = s
        end
    else
        puts "WARNING: Pods-Tests-Specta target not found"
    end
end

2voto

J'ai rencontré le même problème après un certain temps j'ai importé XCTest cadre de phases de construction et le problème est réglé.

Phases de construction-> XCTest.Cadre>nettoyer et de les exécuter. J'espère que ce sera utile à quelqu'un..

pour votre référence...Importer XCTest à un projet existant

1voto

fatuhoku Points 632

Au moment de l'écriture, la dernière version de Cocoapods (0.33.1) n'ont pas de résoudre le problème.

Mais la fine pointe de la version.

Suivez ce guide pour définir la dernière version de Cocoapods en place à partir de la source. J'ai appeler le mien pod-dev (couverts dans le guide) pour la distinguer de la gemme-la version installée de gousses.

L'avantage de cette approche est que vous n'avez pas besoin d'un script dans votre Podfile. Vous avez juste à vous rappeler de faire un pod-dev install au lieu de l'habituel pod install.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X