समस्या के मूल को स्थापित फली पर अपने BSGMetrics.podspec
में निहित है, इन हेडर सार्वजनिक मिलती है:
s.public_header_files = [
'BSGMetrics/Classes/BSGMetrics.h',
'BSGMetrics/Classes/BSGMetricsConfiguration.h',
'BSGMetrics/Classes/BSGMetricsEvent.h'
]
है यही कारण है कि अपने परीक्षण कक्षा में आप पहली बार आयात और करने में सक्षम नहीं देखने में सक्षम हैं दूसरा आयात देखें। परीक्षण लक्ष्य और अपने फली फली के रूप में स्थापित के साथ नमूना परियोजना के माध्यम से -
#import "BSGMetricsEvent.h"
#import "BSGMetricsService.h"
सेवा निजी हैडर करने का इरादा है, तो आप स्थापना इस तरह से यह परीक्षण करने के लिए सक्षम नहीं होगा।
इसके बजाय आप अपने फली फ़ाइलों परियोजना के मुख्य या परीक्षण लक्ष्य को जोड़ा गया है (और मैं परीक्षण, मुख्य नहीं सुझाव है) की आवश्यकता है।
चाल आप कैसे इकाई परीक्षण का इलाज है:
वैसे भी, सरल तरीके को यहाँ में s.public_header_files
संपादित करें (परीक्षण पर विवरण दृष्टिकोण) BSGMetricService
बेनकाब करने के लिए है। "मॉड्यूल", एक ब्लैकबॉक्स के रूप में बीएसजी मेट्रिक्स के बारे में सोचें। इसमें कुछ "दृश्यमान" इंटरफ़ेस और कुछ छुपा कार्यान्वयन विवरण हैं। यह उद्देश्य-सी और स्विफ्ट दोनों के लिए सच है। अलग-अलग भाषा उपकरण आपके मॉड्यूल इकाइयों की दृश्यता को परिभाषित करने के लिए उपयोग किए जाते हैं। उद्देश्य-सी में यह हेडर फाइलें हैं। स्विफ्ट में यह (स्विफ्ट 3.0 से पहले) public
, private
, internal
संशोधक
है तो जब तक आप परीक्षण के दौरान, आप नहीं एक्सेस कर पाएंगे/अपने कार्यान्वयन विवरण का परीक्षण किया जाएगा एक मॉड्यूल के रूप में अपने BSGMetrics का इलाज। आप केवल उपलब्ध इंटरफेस के माध्यम से इसका परीक्षण करने में सक्षम होंगे।
क्या यह बुरा या अच्छा है? वास्तव में, सब कुछ जो आपको चाहिए उस पर निर्भर करता है।हालांकि, अगर [BSGMetrics openWithConfiguration:]
पर आपकी उम्मीद BSGMetricsService
प्रारंभ करने के लिए है, तो आपको अपने परीक्षण के दायरे के लिए दृश्यमान होने के लिए BSGMetricsService
की आवश्यकता है। और दो दृष्टिकोण हैं: मेक दृश्यमान है (जिस तरह से आपने अभी उपयोग किया है) या मॉड्यूल और टेस्ट के स्कोप मर्ज करें।
मैं थोड़ा सा वर्णन करूंगा कि मैं अपने पुस्तकालयों में से किसी एक का परीक्षण करने के लिए बाद के दृष्टिकोण को कैसे प्राप्त करता हूं।
पहला, परीक्षण लक्ष्य एक ही प्रोजेक्ट का हिस्सा है, जहां परीक्षण के तहत सभी फाइलें भी शामिल की जाती हैं।
दूसरा, मेजबान आवेदन के बिना परीक्षण केवल परीक्षण बंडल के अंदर किया जाता है।
तीसरा, परीक्षण के तहत फाइलें परीक्षण लक्ष्य में संकलित करने के लिए भी जोड़े गए हैं।
इतनी लंबी कहानी, परीक्षण और कोड के तहत कोड एक ही मॉड्यूल में रहते हैं।
अधिक पढ़ने here
पाया जा सकता है यह एक समाधान नहीं है, लेकिन वास्तव में मेरी समस्या का समाधान नहीं है। मेरी समझ से, स्विफ्ट इस परिदृश्य के लिए एक बेहतर प्रतिक्रिया प्रदान करता है, इसलिए मैं इसे बहुत ज्यादा नहीं लड़ूंगा और स्विफ्ट ASAP पर स्विच करने के लिए इसे एक और प्रोत्साहन के रूप में मानूंगा। धन्यवाद। :) –
मुझे खुशी है कि आपका निर्माण अब काम कर रहा है। मैं किसी भी तरह से "स्विफ्ट में कुछ समस्या नहीं है" के बारे में आपसे असहमत हूं। मैं कुछ अतिरिक्त विचार देने के लिए जल्द ही परीक्षण करने के दृष्टिकोण पर कुछ विचारों को जोड़ने के लिए अपना प्रश्न संपादित करूंगा –
@DirtyHenry मैंने एक उत्तर अपडेट किया है, उम्मीद है कि यह थोड़ा सा स्पष्ट होगा। –