ios - कोकोपोड्स के साथ Xcode यूनिट परीक्षण




unit-testing cocoapods (8)

  1. अपने यूनिट टेस्ट लक्ष्य सेटिंग का चयन करें।
  2. बिल्ड सेटिंग्स पर जाएं।
  3. हैडर खोज पथ खोजें।
  4. इस मान को $ (SRCROOT) / पॉड्स को पुनरावर्ती के साथ जोड़ें, फिर Xcode आपके लिए मार्ग का समाधान करेगा।

Example

मैं पिछले कुछ दिनों से इसके साथ एक दीवार के खिलाफ अपना सिर पीट रहा हूं, लेकिन कई Google / SO / Github खोजों के बावजूद मुझे उन मुद्दों का समाधान नहीं मिल रहा है जो मैं कर रहा हूं!

मैं जो कुछ करने की कोशिश कर रहा हूं वह मेरे ऐप के लिए कुछ यूनिट टेस्ट बना रहा है जो फायरबेस पॉड्स का उपयोग करता है।

मैं Xcode 7.3.1 और कोकोपोड्स 1.0.1 का उपयोग कर रहा हूं। अपडेट: इश्यू Xcode 8.0 के साथ रहता है

इस पॉडफाइल के साथ:

platform :ios, '9.0'
use_frameworks!
inhibit_all_warnings!

target 'MyApp' do
    pod 'Firebase'
    pod 'Firebase/Auth'
    pod 'Firebase/Database'
    pod 'Firebase/Storage'

    target 'MyAppTests' do
        inherit! :search_paths
    end
end

अपने XCTest वर्ग में मुझे मिलता है

गुम आवश्यक मॉड्यूल 'फायरबेस'

@testable import MyApp में त्रुटि @testable import MyApp

वैकल्पिक रूप से इस पॉडफाइल के साथ:

platform :ios, '9.0'
use_frameworks!
inhibit_all_warnings!

def common_pods
    pod 'SwiftyTimer'
    pod 'Firebase'
    pod 'Firebase/Auth'
    pod 'Firebase/Database'
    pod 'Firebase/Storage'
end

target 'MyApp' do
    common_pods
end

target 'MyAppTests' do
    common_pods
end

परीक्षण का निर्माण होता है लेकिन मेरा कंसोल चेतावनियों से भरा होता है जैसे:

कक्षा <-FirebaseClassName-> दोनों में लागू है ... MyApp ... और ... MyAppTests ... दोनों में से एक का उपयोग किया जाएगा। कौन सा अपरिभाषित है


अपने टेस्ट लक्ष्य के लिए "$ {PODS_ROOT} / Firebase / Core / Sources" केवल बिल्ड सेटिंग्स -> हैडर खोज पथ के अंतर्गत जोड़ें


जैसा कि ने CocoaPods की स्थापना के बाद हैडर सर्च पाथ्स के आसपास एक समस्या का उल्लेख किया।

मेरे पास कई लक्ष्यों के साथ एक परियोजना है जहां पॉड 'फायरबेस' अलग मॉड्यूल में एम्बेडेड है, जो MyProject-Shared कहते हैं। 'पॉडफाइल' में फायरबेस पॉड केवल 'MyProject- साझा' लक्ष्य के लिए स्थापित किया गया। अन्य मॉड्यूल, जो 'MyProject-Shared' का उपयोग करना चाहते हैं, उन्हें एक त्रुटि के कारण संकलित नहीं किया जा सकता है:

'लापता आवश्यक मॉड्यूल "फायरबेस"

मेरे मामले में चाल प्रत्येक लक्ष्य की अनुपलब्ध हेडर खोज पथ को एनालिटिक्स-फ्रेमवर्क के संदर्भ में बिल्ड सेटिंग्स को जोड़ने के लिए थी:

"${PODS_ROOT}/Firebase/CoreOnly/Sources"

कृपया नीचे तस्वीर देखें:

आशा है कि यह आपका समय बचाएगा।


मुझे भी ऐसी ही समस्या का समाधान करना पड़ा था। आपके प्रश्न के संदर्भ में, मैंने अपने MyApp.<configuration>.xcconfig की सामग्री की प्रतिलिपि बनाई है MyApp.<configuration>.xcconfig फ़ाइल को मेरे MyAppTests.<configuration>.xcconfig फ़ाइल। मैंने साफ किया और परीक्षणों का निर्माण किया, और यह काम किया।


मेरी भी यही समस्या थी। मैंने अपने परीक्षण लक्ष्य के लिए pod 'Firebase' को स्थानांतरित करके इसे हल किया। अपने पॉडफाइल को इसमें बदलें:

platform :ios, '9.0'
use_frameworks!
inhibit_all_warnings!

target 'MyApp' do
    pod 'Firebase/Auth'
    pod 'Firebase/Database'
    pod 'Firebase/Storage'

    target 'MyAppTests' do
        inherit! :search_paths
        pod 'Firebase'
    end
end

मेरे लिए समाधान 1.1.0.rc.2 संस्करण के लिए कोकोपीड्स को अपडेट करना था।

sudo gem install cocoapods --pre


विरासत को बदलने की कोशिश करें :complete , जैसे:

target 'MyAppTests' do
    inherit! :complete
end

महत्वपूर्ण रूप से यह किसी और को आपके रेपो की जांच करने की अनुमति देता है, बस एक pod update को कॉपी किए बिना सामान्य रूप से करने के लिए।।


समस्या यहां फायरबेस प्रोजेक्ट में दर्ज है:

https://github.com/firebase/firebase-ios-sdk/issues/58

वर्कअराउंड है:

अपने टेस्ट लक्ष्य के लिए "$ {PODS_ROOT} / Firebase / Core / Sources" केवल बिल्ड सेटिंग्स -> हैडर खोज पथ के अंतर्गत जोड़ें

लेकिन यह भी कोकोआ 1.4.0 या उसके बाद के उन्नयन के द्वारा तय किया गया है, जो एक बेहतर समाधान है।

जिस समय मैं यह लिख रहा हूँ (नवंबर 2017) cocoapods 1.4.0 अभी भी बीटा में है, इसलिए इसे स्थापित करने के लिए आपको बीटा को स्पष्ट रूप से अनुरोध करने की आवश्यकता है:

gem install cocoapods --pre

यह और फिर एक pod install मेरे परीक्षण चलाने में समस्या हल हो गई।





xctest