24

मैं ActivityInstrumentationTestCase2 कक्षा का उपयोग कर किसी एप्लिकेशन के लिए कुछ स्वीकृति परीक्षण लिख रहा हूं। मैं परीक्षण के भीतर से एक अभिविन्यास परिवर्तन करना चाहता हूं ताकि यह सुनिश्चित किया जा सके कि कई चीजें होती हैं। इन चीजों में से यह सुनिश्चित कर रहे हैं कि गतिविधि की स्थिति संरक्षित है, लेकिन मैं यह भी सुनिश्चित करना चाहता हूं कि अभिविन्यास के लिए उचित लेआउट का उपयोग किया जाए।एंड्रॉइड इंस्ट्रूमेंटेशन टेस्ट में आप अभिविन्यास परिवर्तन को कैसे बल देते हैं?

मुझे पता है कि मैं बस ऑनवेवेंसस्टेट/ऑनरस्टोर इंस्टेंसस्टेट/ऑन पॉज़/ऑन रीज़्यूम/आदि का परीक्षण कर सकता हूं। यह सुनिश्चित करने के लिए विधि उदाहरण राज्य संरक्षित है। हालांकि, मैं सोच रहा था कि क्या वास्तव में एक अभिविन्यास परिवर्तन घटना उत्पन्न करने के लिए एक तंत्र है?

क्या इसमें डिवाइस/एमुलेटर को यह सोचने के लिए किसी प्रकार की गति घटना को इंजेक्शन देना शामिल होगा कि यह घुमाया गया है, या क्या इंस्ट्रुमेंटेशन द्वारा प्रदान की गई एक वास्तविक विधि है?

धन्यवाद & चीयर्स!

उत्तर

46

आपको वास्तव में इसके लिए रोबोटियम का उपयोग नहीं करना है। वास्तव में, यदि आप Robotium यह सब कर रहा है के स्रोत देखने जब आप कॉल

solo.setActivityOrientation(Solo.LANDSCAPE); 

myActivity = this.getActivity(); // In your setUp method() 

... 

myActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
+0

भयानक, आपके द्वारा स्वीकृत उत्तर को स्विच किया गया। जासूसी काम के लिए कुडो आप के पास जाते हैं महोदय। – plainjimbo

+0

रोबोटियम इसके लिए छोटा लगता है। –

+6

और शायद किसी को 'getInstrumentation()। WaitForIdleSync();' उसके बाद अभिविन्यास परिवर्तन होने की प्रतीक्षा करने के लिए कॉल करने की आवश्यकता होगी क्योंकि यह एसिंक तरीके से किया जाता है। – Ognyan

3

इसके लिए रोबोटियम का उपयोग करें।

solo.setActivityOrientation(Solo.LANDSCAPE); 

यह है कि: एक वर्ग सोलो कहा जाता है, तो आप सिर्फ एक विधि को फोन करके उन्मुखीकरण को बदल सकते हैं जो का उपयोग कर नहीं है! आपका अभिविन्यास बदल जाएगा। आप रोबोटियम को Google और अपने जार प्राप्त कर सकते हैं और इसे अपने टेस्ट प्रोजेक्ट में जोड़ सकते हैं। रोबोटियम साइट एंड्रॉइड के नोटपैड ऐप पर एक उदाहरण टेस्ट प्रोजेक्ट भी प्रदान करती है (जो एंड्रॉइड एसडीके के साथ नमूना प्रोजेक्ट के रूप में उपलब्ध है) जो दिखाती है कि यह कितना शक्तिशाली है और इसका कितना आसानी से उपयोग किया जा सकता है।

+0

वाह, धन्यवाद: वास्तव में राज्य के बाद उन्मुखीकरण परिवर्तन आप अनुरोध के बाद थोड़े समय के इंतजार करने की जरूरत है परीक्षण करने के लिए! यह थोड़ी देर के बाद से मैंने सवाल पूछा और इसके बहुत सारे विचार देखे गए। यह निश्चित रूप से मेरी समस्या को हल करता है। रोबोटियम एक महान परीक्षण पुस्तकालय की तरह दिखता है। – plainjimbo

+0

हाँ जेम्स, यह निश्चित है! :) –

+0

खराब रोबोटियम के लिए टुकड़ों का समर्थन नहीं करता है। – Martin

5

है AndrewKS आप एक ओरिएंटेशन परिवर्तन का अनुरोध करने

getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
assertTrue(...); 

उपयोग कर सकते हैं लिखा । लेकिन घूर्णन स्वयं एसिंक्रोनस निष्पादित किया जाता है।

getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
Thread.sleep(50); // depends on performance of the testing device/emulator 
assertTrue(...); 
संबंधित मुद्दे