5 votes

Impossible d'utiliser Cocoapod dans les tests unitaires

Je suis en train d'utiliser un cocoapod interne appelé temple8 dans une application que je suis en train de construire. Voici mon Podfile :

plateforme :ios, '9.0'

def temple8
    pod 'j2objc-temple8-debug', :configuration => ['Debug'], :path => '../temple8/build/j2objcOutputs'
    pod 'j2objc-temple8-release', :configuration => ['Release'], :path => '../temple8/build/j2objcOutputs'
end

cible 'cartful-ios' do
  use_frameworks!

  temple8

  pod 'Stripe'
  pod 'Alamofire', '~> 4.0'
  pod 'FontAwesomeKit', :git => 'https://github.com/PrideChung/FontAwesomeKit.git'
  pod 'KeychainAccess'
  pod 'pop', '~> 1.0'
  pod 'libPhoneNumber-iOS', '~> 0.8'
  pod 'AsyncDisplayKit', :git => 'https://github.com/facebook/AsyncDisplayKit.git'
  pod 'Intercom'
  pod 'Mixpanel-swift'
  pod 'UICountingLabel'
  pod 'DTFoundation'

  cible 'cartful-iosTests' do
    inherit! :search_paths
    temple8
  end

  cible 'cartful-iosUITests' do
    inherit! :search_paths
    temple8
  end

end

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['SWIFT_VERSION'] = '3.0'
        end
    end
end

J'ai besoin de référencer des parties de temple8 dans mes tests, c'est pourquoi je l'ai inclus dans les deux cibles de test. Mais ensuite, lorsque je lance l'un de mes tests, je reçois une longue liste d'erreurs comme celle-ci :

objc[83693]: Class PLBuildVersion is implemented in both /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/AssetsLibraryServices.framework/AssetsLibraryServices (0x112334998) and /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/PhotoLibraryServices.framework/PhotoLibraryServices (0x112156880). One of the two will be used. Which one is undefined.

Au départ, je pensais que la duplication des classes était causée par l'inclusion de temple8 à la fois dans les cibles de test et dans la cible de l'application. Mais si je supprime temple8 des cibles de test, chaque fois que j'essaie d'utiliser @testable import ... dans mes tests, j'obtiens une

Failed to import bridging header...

erreur de construction. Cela signifie que les fichiers d'en-tête de temple8 dans l'en-tête de liaison de l'application ne peuvent pas être trouvés par les tests. Je ne sais donc pas quelle est la meilleure approche ici.

3voto

Mihai Fratu Points 3033

À ma connaissance, cet avertissement n'est pas quelque chose que vous avez fait. Je pense avoir vu d'autres personnes rencontrer le même problème et d'après ce que je peux dire, c'est un problème dans le dernier SDK d'Apple. Je vous suggère de l'ignorer en toute sécurité pour le moment. Voici quelques personnes rencontrant les mêmes problèmes :

Vérifiez cette réponse pour obtenir plus d'informations.

1voto

orta Points 1037

Je ne pense pas que vous ayez besoin du temple8 à l'intérieur de vos cibles de test - il devrait juste s'agir des bibliothèques pour les tests: Voici un exemple.

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