2015-06-25 13 views
24

पर बाहरी ढांचे को जोड़ना, इसलिए, मेरे पास पहले से ही मेरे हाथों में प्रोजेक्ट मौजूद है और मैं सेब द्वारा प्रदान किए गए इस नए फैंसी यूआई परीक्षण बंडल का उपयोग करके कुछ यूआई परीक्षण बनाने की कोशिश कर रहा हूं। समस्या यह है कि परीक्षण लक्ष्य के पास किसी बाहरी ढांचे तक पहुंच नहीं है (और मुझे उनमें से एक के साथ कुछ सेटअप करने की आवश्यकता है)। निर्माण चरणों में ढांचे को जोड़ना और मुख्य लक्ष्य से फ्रेमवर्क खोज पथ को कॉपी करना कुछ भी नहीं करता है।यूआई इकाई परीक्षण लक्ष्य, आईओएस

ब्राउज़िंग के दिन मुझे केवल एक चीज मिली, "चीजें थोड़ी अलग बनाती हैं"। बंडल लोडर और टेस्ट होस्ट को $ (BUILT_PRODUCTS_DIR) /App.app/App पर सेट करके, मैं अभी भी test.m पर बाहरी ढांचे को आयात नहीं कर सका, लेकिन मैं उन वर्गों को आयात कर सकता हूं जो उनके लिए स्वयं करते हैं। और यह सब ठीक और बेवकूफ होगा जब तक कि उसने कुछ सामान तोड़ नहीं दिया। अब बंडल और होस्ट की स्थापना करके मेरी यूआई परीक्षण प्रक्षेपण विधि पर अमल करने में असमर्थ है:

[[[XCUIApplication alloc] init] launch]; 

यह त्रुटि के साथ दुर्घटनाओं: अभिकथन विफलता: यूआई परीक्षण विफलता - अनुप्रयोग राज्य अभी भी समाप्त नहीं कर रहा है।

अंत में मैं सेटअप से लॉन्च विधि को हटा सकता हूं और प्रत्येक परीक्षण को मैन्युअल रूप से ट्रिगर कर सकता हूं, इसलिए यह निष्पादन से पहले हर बार एप्लिकेशन को पुनरारंभ करता है, लेकिन यह समाधान बहुत गलत लगता है (विशेष रूप से कुछ बड़ी परियोजनाओं के लिए)। क्या किसी को इस समस्या को संभालने का उचित तरीका पता है?

+0

यह ओएस एक्स अनुप्रयोगों पर भी लागू होता है, और सभी ऐप्पल डेवलपर्स के लिए एल कैपिटन में इस सुविधा का लाभ उठाने के लिए एक उत्तर की आवश्यकता है। –

उत्तर

1

मैंने इसके लिए क्या किया है यूआई परीक्षण चलाने के लिए XCUIApplication पर एक पर्यावरण परिवर्तक जोड़ना है। उसके बाद एप्लिकेशन के मुख्य भाग में #DEBUG के लिए प्री-प्रोसेसर चेक है, और फिर जांचें कि test पर्यावरण चर सेट किया गया है या नहीं; यदि यह है, तो यूआई परीक्षणों के लिए आवश्यक कदम उठाएं।

अनिवार्य रूप से, यह आपको अपने ऐप को कॉन्फ़िगर करने की अनुमति देगा कि यूआई परीक्षण चलाने के लिए आपको इसकी आवश्यकता क्यों है। इसका मतलब यह भी है कि प्री-प्रोसेसर चेक रिलीज बिल्ड के लिए पूरी तरह से सेटअप कोड को हटा देगा।

+0

यह काम करेगा यदि आप नकली आउट के लिए कोई उल्लेखनीय मात्रा में डेटा के साथ एक छोटा शौक ऐप बना रहे हैं। यह असली दुनिया ऐप परीक्षण के लिए एक व्यवहार्य दृष्टिकोण नहीं है, फेसबुक/इंस्टाग्राम शैली परीक्षण सोचें, लेकिन नकली डेटा के साथ। –

+0

"नकली डेटा" से आपका क्या मतलब है निर्भर करता है। आप इस तरह से पूर्व-निर्मित SQLite डेटाबेस में आसानी से लोड कर सकते हैं। बेशक, यदि आप सबकुछ फिक्र कर रहे हैं तो आपको यूआई परीक्षण का पूर्ण प्रभाव नहीं मिल रहा है। – Harry

+0

यदि आपकी कल्पना यह है कि सॉफ़्टवेयर एप्लिकेशन केवल कैश किए गए डेटा पेश कर रहे हैं, तो यह समझाना मुश्किल होगा। लॉगिन, इंटरैक्टिव चैट, कॉलिंग, वीडियो, ऑडियो, खोलने/बंद करने वाले टैब, खिड़कियां, बदलती सेटिंग्स, रंग, अभिगम्यता, वॉयसओवर इत्यादि के बारे में सोचें और अलगाव * में लिखे गए प्रत्येक परीक्षण *, जिसमें उपलब्ध और अपेक्षित डेटा को रीसेट करने की आवश्यकता है प्रत्येक परीक्षण में। यही कारण है कि हमें यूनिट टेस्ट के समान डेटा तक पहुंच की आवश्यकता है, अन्यथा आईओएस पर केआईएफ की तुलना में ढांचा बेकार है (और ओएस एक्स पर कुछ भी नहीं) –

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