2015-10-26 4 views
6

मैं अपने यूआई परीक्षण लिखना चाहता हूं ताकि वे गतिशील प्रकार के सभी सात राज्यों को सबसे छोटे से सबसे बड़े तक परीक्षण कर सकें। मुझे यह कैसे करना चाहिए?गतिशील प्रकार और आईओएस सिम्युलेटर: मैं मूल्य कैसे निर्धारित कर सकता हूं?

क्या मैं अपनी योजना में सिम्युलेटर के लिए एक पर्यावरण चर सेट कर सकता हूं और फिर अलग-अलग योजनाएं बना सकता हूं?

या क्या मैं अपने परीक्षण में गतिशील प्रकार परिवर्तनीय प्रोग्राम सेट कर सकता हूं?

मैं एक डायनामिक टाइप कंट्रोलर नहीं बनाऊंगा और फिर इसे कहूंगा कि यह किस प्रकार है, क्योंकि मुझे कुछ तत्वों के लिए इसका उपयोग करना भूलना जोखिम होता है, और उसके बाद व्यवहार का सही ढंग से परीक्षण नहीं होता है।

चीयर्स

Nik

उत्तर

3

मैं इस जवाब की अपूर्णता के लिए हमें खेद है, लेकिन यह एक टिप्पणी के लिए बहुत लंबा है और वहाँ किसी भी कोड का प्रारूपण नहीं होगा।

संक्षिप्त उत्तर यह है: यह समर्थित नहीं है: https://forums.developer.apple.com/thread/21503, लेकिन यह शायद एक रडार वारंट करता है।

लंबा उत्तर यह है कि आप एक साथ कुछ हैक करने में सक्षम हो सकते हैं। सिम्युलेटर में गतिशील प्रकार की सेटिंग आपके फाइल सिस्टम पर उपलब्ध है: ~/Library/Developer/CoreSimulator/Devices/<device identifier>/data/Library/Preferences/com.apple.UIKit.plist। आप प्रोग्राम एक XCTest का उपयोग कर अंदर से सिम्युलेटर फाइल सिस्टम के लिए पथ प्राप्त कर सकते हैं:

let environment = NSProcessInfo.processInfo().environment 
    if let resourcesDir = environment[ "SIMULATOR_SHARED_RESOURCES_DIRECTORY" ] 
    { 
     print("-- Simulator Shared Resources Directory: \(resourcesDir)") 
     let dictionary = NSMutableDictionary(contentsOfFile: "\(resourcesDir)/data/Library/Preferences/com.apple.UIKit.plist")! 
     print("Dictionary: \(dictionary)") 
    } 

हालांकि, परीक्षण सिम्युलेटर निर्देशिका से सैंडबॉक्स है, तो आप वास्तव में नहीं खोल सकते या प्राथमिकताएं संशोधित करें। शब्दकोश को खोलने की कोशिश करते समय वह कोड स्निपेट विफल रहता है। मैंने कभी भी एक्सकोड सर्वर के साथ यह कोशिश नहीं की।

आप एक शेल स्क्रिप्ट के साथ प्लिस्ट को संशोधित कर सकते हैं जैसे: plutil -replace UIPreferredContentSizeCategoryName -string UICTContentSizeCategoryAccessibilityXXXL com.apple.UIKit.plist। फ़ाइल को संशोधित करने के बाद सिम्युलेटर को पुनरारंभ करने की आवश्यकता है ताकि यह किसी साझा निर्माण वातावरण में उड़ न सके। दुर्भाग्यवश, सिम्युलेटर की फाइल सिस्टम का पथ एक्सकोड में प्री-एक्शन स्क्रिप्ट्स के लिए उपलब्ध नहीं है। आप सभी सिमुलेटर के लिए सेटिंग को संशोधित कर सकते हैं, लेकिन फिर, साझा किए गए निर्माण वातावरण में उड़ नहीं सकते हैं।

दिन के अंत में, आप DynamicTypeController बनाने से बेहतर हो सकते हैं और यह सुनिश्चित करने के लिए कुछ प्रक्रिया जोड़ सकते हैं कि कोई भी UIApplication.preferredContentSizeCategory का उपयोग नहीं करता है।

यह सब एक्सकोड 7.1 (7 बी 9 1 बी) का उपयोग करके परीक्षण किया गया था।

+0

हे कार्लोस, माफी माँगने की कोई ज़रूरत नहीं है, मुझे लगता है कि आपका जवाब उतना ही पूरा हो गया है जितना इसे प्राप्त होता है। जिस दृष्टिकोण पर मैंने शुरुआत की थी वह अलग सिमुलेटर बना रहा था, लेकिन अब मैं पूरी तरह से इस प्लेस्ट को संपादित करने के लिए स्विच करूंगा। एक्सकोड सर्वर का उपयोग उसी प्रोजेक्ट पर उसी टीम के लिए किया जाता है, ताकि कोई समस्या न हो। बहुत बहुत धन्यवाद! :-) – niklassaers

+0

मैंने RADAR # 23459874 जोड़ा है। पीएस, मुझे खेद है, मैंने अभी देखा है कि उत्तर को सही के रूप में चिह्नित करने से पहले मुझे बक्षीस की समयसीमा समाप्त हो गई थी। :-( – niklassaers

+0

ग्रेट फाइंड। ऐसा लगता है कि आप एक यूआईपीटीएन्टेंट कंटेंटशिप श्रेणीकरण UICTContentSizeCategoryAccessibilityXXXL लॉन्च तर्क के रूप में जोड़ सकते हैं (उदाहरण के लिए एक एक्सकोड योजना में)। इस उत्तर के लिए धन्यवाद जिसने वास्तव में मेरी मदद की। – Clafou

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