2017-02-09 19 views
5

Tôi đang sử dụng một chiếc cocoapod trong nhà có tên là temple8 trong một ứng dụng mà tôi đang xây dựng. Đây là Podfile của tôi:Không thể sử dụng Cocoapod trong Bài kiểm tra Đơn vị

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 

Tôi cần tham khảo các phần của temple8 trong các bài kiểm tra của tôi, đó là lý do tôi đưa nó vào cả hai mục tiêu kiểm tra. Nhưng sau đó khi tôi chạy bất kỳ thử nghiệm của tôi, tôi nhận được một danh sách dài các lỗi như thế này:

objc [83.693]: Lớp PLBuildVersion được thực hiện trong cả hai /Applications/Xcode.app/Contents/Developer/Platforms /iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/AssetsLibraryServices.framework/AssetsLibraryServices (0x112334998) và /Ứng dụng/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs /iPhoneSimulator.sdk/System/Library/PrivateFrameworks/PhotoLibraryServices.framework/PhotoLibraryServices (0x112156880). Một trong hai người sẽ được sử dụng. Cái nào không xác định.

Ban đầu tôi nghĩ rằng việc sao chép các lớp học là do bao gồm đền8 trong cả mục tiêu kiểm tra và mục tiêu của ứng dụng. Nhưng nếu tôi loại bỏ temple8 từ các chỉ tiêu kiểm tra, bất cứ lúc nào tôi cố gắng sử dụng @testable import ... trong các thử nghiệm của tôi, tôi nhận được một

Failed to import bridging header... 

build lỗi. Có nghĩa là các tệp tiêu đề temple8 trong tiêu đề bắc cầu của ứng dụng không thể được tìm thấy bởi các bài kiểm tra. Vì vậy, tôi không chắc chắn cách tiếp cận tốt nhất là ở đây.

Trả lời

3

Theo như tôi biết, cảnh báo đó không phải là điều bạn đã làm. Tôi nghĩ rằng tôi thấy một số người khác có cùng một vấn đề và theo như tôi có thể nói đó là một vấn đề trong SDK mới nhất từ ​​Apple. Tôi nói bây giờ bạn có thể bỏ qua nó một cách an toàn. Dưới đây là một số người có vấn đề tương tự:

Kiểm tra answer này để có được thêm thông tin.

+0

À nó giống như tôi ' m cấm viết các bài kiểm tra đơn vị cho đến khi Apple giải quyết vấn đề này. Không phải là một tình huống tuyệt vời ... Rất may là hầu hết logic của ứng dụng đều nằm trong bản thân ngôi đền8, được kiểm tra kỹ lưỡng. – AdColvin

1

Tôi không nghĩ rằng bạn sẽ cần số temple8 bên trong mục tiêu thử nghiệm của mình - nó chỉ là thư viện để thử nghiệm: Đây là example.

+0

Nếu tôi xóa temple8 khỏi mục tiêu kiểm tra, bất cứ khi nào tôi cố nhập ứng dụng của mình vào thử nghiệm bằng cách sử dụng '@testable import', thì tôi thấy lỗi xây dựng' Failed to import bridging header' – AdColvin

Các vấn đề liên quan