2015-06-15 10 views
15

मैं अपने आईओएस ऐप में कक्षाओं का परीक्षण करने की कोशिश कर रहा हूं। मैं अपने PickleTests.swift परीक्षण फ़ाइल के शीर्ष पर import Pickle जोड़ कर अपने ऐप में Pickle लक्ष्य को आयात करने की कोशिश कर रहा हूं जिसमें मेरी सभी कक्षाएं मेरे परीक्षण लक्ष्य PickleTests में import Pickle जोड़कर हैं, लेकिन मुझे एक त्रुटि मिल रही है।

जो त्रुटि मैं प्राप्त करता हूं वह है: "ब्रिजिंग हेडर (ब्रिजिंग हेडर टू पथ) आयात करने में विफल" (ब्रिजिंग हेडर का पथ त्रुटि में दिखाया गया है, न कि कोष्ठक)।

मैंने Pickle के लिए "बिल्ड" के लिए अपनी बिल्ड सेटिंग्स में "मॉड्यूल परिभाषित" सेटिंग करने का प्रयास किया है, लेकिन यह अभी भी काम नहीं करता है। मैंने बिल्ड सेटिंग्स में भी सत्यापित किया है कि ब्रिजिंग हेडर फ़ाइल का सही पथ है।

कोई विचार है कि मैं अपना परीक्षण कैसे स्थापित कर सकता हूं? मैं एक्सकोड 6.3.2 पर हूं। अगर आपको कोई अतिरिक्त जानकारी चाहिए तो कृपया मुझे बताएं।मुख्य स्विफ्ट कक्षाओं को परीक्षण लक्ष्य में आयात नहीं कर सकता?

खुला एक नए टैब में छवि यह बड़ा देखने के लिए।

+0

आपको किसी भी वास्तविक परीक्षण के बिना 'आयात' जोड़कर यह त्रुटि मिलती है? – matt

+0

@matt यह सही है। मैं प्रश्न – dcgoss

+0

पर एक छवि जोड़ सकता हूं, पहली बात यह है कि मैं सुझाव दूंगा कि आप केवल परीक्षण लक्ष्य और सभी परीक्षण फाइलों को हटा दें और एक नया परीक्षण लक्ष्य बनाएं। चूंकि आपके पास अभी तक कोई वास्तविक परीक्षण नहीं है, आपके पास खोने के लिए कुछ भी नहीं है ... :) – matt

उत्तर

27

इस के साथ मेरी सहायता के लिए @matt के लिए बहुत धन्यवाद!

छवियों पर राइट क्लिक करें और उन्हें बड़ा देखने के लिए उन्हें एक नए टैब में खोलें।

जैसा कि https://github.com/CocoaPods/CocoaPods/issues/2695 पर चर्चा की गई थी, इस मुद्दे को परियोजना के हिस्से के रूप में कोकोपोड रखने के साथ झूठ बोलना प्रतीत होता था। इस समस्या को सुलझाने वाले लिंक के निचले भाग में उत्तर में आपकी एप्लिकेशन सेटिंग्स पर क्लिक करना शामिल है, और फिर अपने प्रोजेक्ट Info (आपके किसी भी लक्ष्य 'सेटिंग पर क्लिक करना शामिल नहीं है)। वहाँ आप अपने Configurations सेटिंग्स देखेंगे: enter image description here

तुम भी देखेंगे config सेटिंग में दो लक्ष्यों को देखते हैं कि, और अपने परीक्षण लक्ष्य config सेटिंग किसी से निर्धारित किया जाएगा कि जब आपका मुख्य लक्ष्य Cocoapods से लिंक किया जाएगा। फिक्सिंग लक्ष्य के बगल में None मूल्य को बदलने में निहित है जो मुख्य लक्ष्य है: enter image description here

तो अब वे दोनों कोकोपोड से जुड़े हुए हैं। यह सुनिश्चित करना कि आपके मुख्य लक्ष्य में Defines moduleYes पर Build Settings पर सेट है, अपनी परियोजना बनाएं और परीक्षण फ़ाइलों में त्रुटि दूर होनी चाहिए।

इसके अलावा, मैंने यह ठीक करने के बाद मुझे एक और त्रुटि का सामना करना पड़ा जहां लिंकर मेरे परीक्षण लक्ष्य में लाइब्रेरी को खोने के बारे में शिकायत कर रहा था। यह लापता लाइब्रेरी मेरी प्रोजेक्ट में एक और निर्भरता थी, और मैंने यह सुनिश्चित करके यह त्रुटि हल की कि मेरी मुख्य निर्भरता Link Binary with Libraries में मेरी सभी निर्भरताओं को Build Phases सेटिंग्स में लिंक किया गया था, इसकी Build Phases सेटिंग्स में परीक्षण लक्ष्य के Link Binary with Libraries पर प्रतिलिपि बनाई गई थी।

+0

बहुत बढ़िया !! काम किया –

3

आपको ऐसा करने की ज़रूरत नहीं है। आप अपने पॉडफाइल में link_with का उपयोग कर सकते हैं। आपके मामले में आप करेंगे।

link_with 'Pickle', 'PickleTests' 

और फिर pod update

+0

'link_with' अब बहिष्कृत कर दिया गया है और इसे' abstract_target' का उपयोग करने का सुझाव दिया गया है –

1

Fwiw, Xcode 7 पर, टिप्पणी के साथ आयात: @testable। उदाहरण:

import Pickle 
@ImportTests 

तो फिर तुम कोड पूरा होने और संकलन में कक्षाओं को देखने के लिए सक्षम हो जाएगा। स्रोत: https://www.natashatherobot.com/swift-2-xcode-7-unit-testing-access/

संबंधित मुद्दे

 संबंधित मुद्दे