2012-06-18 21 views
8

मैं अभिविन्यास परिवर्तन (चित्र/परिदृश्य) को संभालने के लिए अपने ऐप की क्षमता का परीक्षण करना चाहता हूं। मैं वर्तमान में KIF का उपयोग कर रहा हूं और जहां तक ​​मुझे पता है, यह ऐसा नहीं कर सकता है। आईओएस सिम्युलेटर के लिए प्रोग्रामिक रूप से रोटेशन घटनाओं को अनुकरण करने का कोई तरीका है?परीक्षण प्रयोजनों के लिए आईओएस में अभिविन्यास परिवर्तनों को अनुकरण करें

मुझे कोई परवाह नहीं है कि यह कुछ अनियंत्रित निजी एपीआई है या हैक क्योंकि यह केवल परीक्षण के दौरान चलाएगा और उत्पादन निर्माण का हिस्सा नहीं होगा।

उत्तर

9

यहाँ इस लक्ष्य को हासिल करने के लिए एक कदम है अपने डिवाइस एक मेज या accelerometer के अपडेट के बल रखें दृश्य वापस बारी बारी से होगा।

+0

यह सिम्युलेटर में काम नहीं करता प्रतीत होता है। मेरे पास डिवाइस नहीं है इसलिए मैंने इसका परीक्षण नहीं किया है लेकिन केआईएफ परीक्षण वैक्ससिम के माध्यम से सिमुलेटर पर चलेंगे ताकि इसे सिम्युलेटर पर चलाना पड़े। क्या आप कृपया पुष्टि कर सकते हैं कि यह सिम्युलेटर पर नहीं चलता है? मैं आईओएस 6.1 सिम्युलेटर का उपयोग कर रहा हूँ। – applefreak

+0

मेरा बुरा! यह केवल तभी काम करता है जब ऐप प्रश्न में अभिविन्यास का समर्थन करता है! – applefreak

0

मुझे नहीं पता कि आप 'प्रोग्रामेटिकली' से क्या मतलब रखते हैं, लेकिन अगर आप एप्पल द्वारा प्रदान किए गए यूआईयूटॉमेशन लाइब्रेरी का उपयोग इंस्ट्रूमेंट्स एप्लीकेशन के ऑटोमेशन टेम्पलेट के साथ करते हैं तो आप आईफोन द्वारा समर्थित विभिन्न ओरिएंटेशन अनुकरण कर सकते हैं।

+0

सच है, मुझे यह भी मिला है। मैं अभी भी उद्देश्य-सी में, ऐप के भीतर से ऐसा करने का एक तरीका ढूंढ रहा हूं। इस प्रकार केआईएफ परीक्षण ढांचा संचालित होता है। –

-2

प्रोग्रामिंग क्यों करें? सिम्युलेटर वही करता है जो आप चाहते हैं, यह अभिविन्यास परिवर्तनों को संभालने के लिए ऐप्स की क्षमता का परीक्षण करता है।

सिम्युलेटर में या तो शीर्ष मेनू का उपयोग करें हार्डवेयर> बाएं/दाएं घुमाएं या कमांड दबाएं और बाएं और दाएं तीरों का उपयोग करें।

+ (KIFTestStep*) stepToInterfaceOrientation: (UIInterfaceOrientation) toInterfaceOrientation { 

    NSString* orientation = UIInterfaceOrientationIsLandscape(toInterfaceOrientation) ? @"Landscape" : @"Portrait"; 
     return [KIFTestStep stepWithDescription: [NSString stringWithFormat: @"Rotate to orientation %@", orientation] 
          executionBlock: ^KIFTestStepResult(KIFTestStep *step, NSError *__autoreleasing *error) { 
           if([UIApplication sharedApplication].statusBarOrientation != toInterfaceOrientation) { 
            UIDevice* device = [UIDevice currentDevice]; 
            SEL message = NSSelectorFromString(@"setOrientation:"); 

            if([device respondsToSelector: message]) { 
             NSMethodSignature* signature = [UIDevice instanceMethodSignatureForSelector: message]; 
             NSInvocation* invocation = [NSInvocation invocationWithMethodSignature: signature]; 
             [invocation setTarget: device]; 
             [invocation setSelector: message]; 
             [invocation setArgument: &toInterfaceOrientation atIndex: 2]; 
             [invocation invoke]; 
            } 
           } 

           return KIFTestStepResultSuccess; 
          }]; 
} 

नोट::

+3

मैं इसे प्रोग्रामेटिक रूप से करना चाहता हूं क्योंकि मैं स्वचालित यूआई परीक्षण करना चाहता हूं जो बिल्ड सर्वर पर मेरे हस्तक्षेप के बिना चलता है। –

4

UI ऑटोमेशन में अभिविन्यास परिवर्तन अनुकरण करने के लिए आप UIATarget के लिए setDeviceOrientation विधि का उपयोग कर सकते हैं। उदाहरण:

UIATarget.localTarget().setDeviceOrientation(UIA_DEVICE_ORIENTATION_LANDSCAPELEFT); 

विधि को एक पैरामीटर 'डिवाइसऑरिएंटेशन' निरंतर आवश्यकता है। अधिक जानकारी here

यह 100% असली आईओएस डिवाइस पर काम करता है। मैं सिम्युलेटर के बारे में निश्चित नहीं हूँ।

+0

आप जो सुझाव देते हैं वह वह है जो यूआई ऑटोमेशन टूल से चलाना है। वह मेरे लिए काम नहीं करेगा। मुझे उद्देश्य सी कोड की आवश्यकता है जिसे ऐप के भीतर से बुलाया जा सकता है। इस प्रकार केआईएफ परीक्षण ढांचा काम करता है। पर्याप्त स्पष्ट नहीं करने के लिए खेद है। –