فشل اختبار Robotium مع: junit.framework.assertionfailederror: لا يمكن النقر فوق العرض!

StackOverflow https://stackoverflow.com/questions/3911419

سؤال

لقد بدأت للتو مع Robotium وحاولت أول اختبار بسيط للغاية ، لكنني أواجه بعض المشكلات التي لا يمكنني شرحها / لا تبدو منطقًا بالنسبة لي.

لديّ tabhost مع مجموعة نشاط وزر تبديل على كل نشاط يتم عرضه في قسم محتوى TabHost. عندما أضغط على زر التبديل ، تتغير منطقة محتوى علامة التبويب إلى نشاط آخر (mtabhost.setCurrentTab (نية النية) ؛). يحمل كل نشاط زر التبديل ، دائمًا مع تسمية "Toggle". عندما أقوم بالنقر فوق زر التبديل في نشاط الثواني ، فإنه سيعود إلى الأول (كله داخل منطقة محتوى علامة التبويب).

|-----------------|
| TabHost |       | 
|-----------------| 
|                 | 
| Toggle-Button   | 
|                 | 
| (ActivityGroup: | 
| Activities      | 
| change in here) |
|                 | 
|-----------------|

الآن ، كل هذا يدويًا يعمل بشكل جيد ، لكن اختبار الروبوتيوم لا. عندما أحاول النقر فوق زر التبديل في النشاط الثاني ، أحصل على رسالة خطأ "junit.framework.assertionfailederror: لا يمكن النقر فوق عرض!"

هذا هو الاختبار الخاص بي - بسيط للغاية وصغير:

    solo.sleep(5000);
    solo.waitForActivity("StartTabsActivity", 10000);

    solo.clickOnButton("Toggle");
    // this will swap the activity inside the tabhost content section

    solo.sleep(5000);
    solo.waitForActivity("StatusListActivity", 5000);

    solo.assertCurrentActivity("Expected StatusList activity", "StatusListActivity");

    LogUtils.logD("robotium: button label: " + solo.getButton(1).getText()); 
    // ... outputs: robotium: button label: Toggle

    LogUtils.logD("robotium: button clickable: " + solo.getButton(1).isClickable()); 
    // ... outputs: robotium: button clickable: true

    solo.clickOnButton("Toggle");   
    // ... throws: junit.framework.AssertionFailedError: View can not be clicked!

ما لا أفهمه هنا: أنا أتحقق من وجود زر مع تسمية "Toggle" وقابلة للنقر ، ومع ذلك ، أحصل على خطأ يقول "لا يمكن النقر على هذا العرض.". وهناك زر "تبديل" واحد فقط في النشاط الحالي المعني.

فيما يتعلق بهذا السؤال ، لدي سؤال صغير آخر: عندما أعمل مع TabHost + ActivityGroup ، هل "solo.getCurrentActivity ()" يعيد دائمًا النشاط المضمن لمجموعة النشاط ، وليس النشاط الخارجي؟ هل يمكن أن تصل سولو إلى عناصر النشاط الخارجي؟ في حالتي أعلاه ، يكون زر التبديل دائمًا جزءًا من النشاط الداخلي/المدمج - في حالة أهمية هنا.

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

المحلول

لقد حصلت للتو على الرد من Robotium Dev ، أن هذه مشكلة سيتم إصلاحها في Robotium 1.8. نرى هنا

نصائح أخرى

يمكنك استخدام هذا واحد:

solo.clickOnView(solo.getView("Toggle"))

أو:

solo.clickOnView(solo.getView(R.id.B))

بدلاً من ذلك ، يمكنك الذهاب للحصول على أتمتة Junit نفسها التي توفرها Android. يمكنك بسهولة إرسال keyevents لتحديد خيار القائمة وإنهاء المهمة.

كل ما عليك فعله هو إنشاء طريقة حالة اختبار Junit في رمز الاختبار الذي يحدد خيار القائمة. اتبع هذه الطرق أدناه:-

  • نشاط التشغيل في طريقة الاختبار
  • إرسال قائمة Keyevent انقر إلى النشاط. عندما يتم عرض خيارات القائمة ، أرسل لأعلى ، وأسفل ، ويسار ومين keyevents للحصول على التركيز على الخيار وإرسال KeyEvent DPAD Center.

آمل أن يحل هذا جيدًا مشكلتك. ولكن قبل ذلك ، يجب أن تعرف القليل من إطار عمل Junit & Test في Android SDK ..

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