سؤال

أكتب بعض اختبارات القبول لتطبيق ما باستخدام فئة ActivityInstrumentationTestCase2. أريد أن أتسبب في تغيير اتجاه من داخل الاختبار للتأكد من حدوث عدد من الأشياء. من بين هذه الأشياء ضمان الحفاظ على حالة النشاط ، لكنني أود أيضًا التأكد من استخدام التصميم المناسب للاتجاه.

أعلم أنه يمكنني ببساطة اختبار onsaveinstancestate/onrestoreinstancestate/onpause/onresume/etc. طرق للتأكد من الحفاظ على حالة المثيل. ومع ذلك ، كنت أتساءل عما إذا كانت هناك بالفعل آلية للتسبب في حدث تغيير التوجيه؟

هل ينطوي ذلك على حقن نوع من الأحداث لخداع الجهاز/المحاكي للاعتقاد بأنه قد تم تدويره ، أم أن هناك طريقة فعلية لهذا المقدمة بواسطة الأجهزة؟

شكرا وهتافات!

هل كانت مفيدة؟

المحلول

ليس عليك في الواقع استخدام الروبوتيوم لهذا الغرض على الإطلاق. في الواقع ، إذا رأيت مصدر الروبوتيوم ، فكل ما تفعله عند الاتصال

solo.setActivityOrientation(Solo.LANDSCAPE);

هو

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

...

myActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

نصائح أخرى

كما كتب أندروكس يمكنك استخدامه

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(...);

استخدام robotium لذلك. هناك فئة تسمى سولو ، باستخدام الاتجاه من خلال استدعاء طريقة ما:

solo.setActivityOrientation(Solo.LANDSCAPE);

هذا هو! سوف يتغير اتجاهك. يمكنك Google Robotium والحصول على جرة وإضافتها إلى مشروع الاختبار الخاص بك. يقدم موقع Robotium أيضًا مشروع اختبار مثال على تطبيق Notepad الخاص بـ Android (والذي يتوفر كمشروع عينة مع Android SDK) والذي يوضح مدى قوته ومدى سهولة استخدامه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top