2017-02-09 14 views
5

Używam w domu cocoapod o nazwie temple8 w aplikacji, którą buduję. Oto mój Podfile:Nie można użyć Cocoapod w testach jednostkowych

platform :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 

target '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' 

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

    target '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 

Muszę odnieść się do części temple8 w moich testach, dlatego umieściłem go w obu celach testowych. Ale wtedy, gdy biegnę żadnego z moich badań, mam długą listę błędów tak:

objc [83693]: Klasa PLBuildVersion jest realizowany w obu /Applications/Xcode.app/Contents/Developer/Platforms /iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/AssetsLibraryServices.framework/AssetsLibraryServices (0x112334998) i /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs /iPhoneSimulator.sdk/System/Library/PrivateFrameworks/PhotoLibraryServices.framework/PhotoLibraryServices (0x112156880). Jeden z dwóch będzie użyty. Która z nich jest niezdefiniowana.

Początkowo sądziłem, że powielenie klas zostało spowodowane włączeniem świątyni8 zarówno do celów testowych, jak i celu aplikacji. Ale jeśli usunąć temple8 z celów testowych, za każdym razem staram się korzystać @testable import ... w moich testach, pojawia się błąd kompilacji

Failed to import bridging header... 

. Oznacza to, że pliki nagłówkowe temple8 w nagłówku pomostowym aplikacji nie mogą zostać znalezione podczas testów. Nie jestem więc pewien, jakie jest najlepsze podejście.

Odpowiedz

3

O ile wiem, ostrzeżenie nie jest czymś, co zrobiłeś. Myślę, że widziałem inne osoby mające ten sam problem i o ile mogę powiedzieć, że jest to problem w najnowszym SDK firmy Apple. Mówię, że możesz spokojnie zignorować to na teraz. Oto niektóre osoby posiadające te same problemy:

Sprawdź to answer, aby uzyskać więcej informacji.

+0

Cóż, to brzmi jak ja ' m zabronione jest pisanie testów jednostkowych, dopóki Apple nie rozwiąże tego problemu. Nie jest to dobra sytuacja ... Na szczęście większość logiki aplikacji znajduje się w samej Temple8, która jest dobrze przetestowana. – AdColvin

1

Nie sądzę, że będziesz potrzebował temple8 w swoich celach testowych - powinny to być biblioteki do testowania: Oto example.

+0

Jeśli usunę świątynię8 z celów testowych, za każdym razem, gdy spróbuję zaimportować moją aplikację do testu za pomocą '@testable import', wtedy zobaczę błąd" Nie udało się importować nagłówka mostu " – AdColvin

Powiązane problemy