简体   繁体   中英

ImageButtons are not found Robotium Android

MainActivityFunctionalTest

if (solo.waitForActivity(MainActivity.class)) {
assertTrue(solo.waitForView(R.id.btn_next));
             ImageButton submitBtn = (ImageButton)
             solo.getImageButton(R.id.btn_next);
assertNotNull(submitBtn);
            solo.clickOnImageButton(R.id.btn_next);
}

Test case failed due to the following exception:

02-12 15:59:11.612: I/TestRunner(3010): junit.framework.AssertionFailedError: 2131361828 ImageButtons are not found!
02-12 15:59:11.612: I/TestRunner(3010):     at junit.framework.Assert.fail(Assert.java:50)
02-12 15:59:11.612: I/TestRunner(3010):     at com.robotium.solo.Waiter.waitForAndGetView(Waiter.java:513)
02-12 15:59:11.612: I/TestRunner(3010):     at com.robotium.solo.Getter.getView(Getter.java:50)
02-12 15:59:11.612: I/TestRunner(3010):     at com.robotium.solo.Solo.getImageButton(Solo.java:1850)
02-12 15:59:11.612: I/TestRunner(3010):     at com.morpho.morphonfclek.test.MainActivityFunctionalTest.testRegistrationFormIsSubmitted(MainActivityFunctionalTest.java:110)
02-12 15:59:11.612: I/TestRunner(3010):     at java.lang.reflect.Method.invokeNative(Native Method)
02-12 15:59:11.612: I/TestRunner(3010):     at java.lang.reflect.Method.invoke(Method.java:525)
02-12 15:59:11.612: I/TestRunner(3010):     at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214)
02-12 15:59:11.612: I/TestRunner(3010):     at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199)
02-12 15:59:11.612: I/TestRunner(3010):     at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:192)
02-12 15:59:11.612: I/TestRunner(3010):     at junit.framework.TestCase.runBare(TestCase.java:134)
02-12 15:59:11.612: I/TestRunner(3010):     at junit.framework.TestResult$1.protect(TestResult.java:115)
02-12 15:59:11.612: I/TestRunner(3010):     at junit.framework.TestResult.runProtected(TestResult.java:133)
02-12 15:59:11.612: I/TestRunner(3010):     at junit.framework.TestResult.run(TestResult.java:118)
02-12 15:59:11.612: I/TestRunner(3010):     at junit.framework.TestCase.run(TestCase.java:124)
02-12 15:59:11.612: I/TestRunner(3010):     at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)
02-12 15:59:11.612: I/TestRunner(3010):     at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)
02-12 15:59:11.612: I/TestRunner(3010):     at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554)
02-12 15:59:11.612: I/TestRunner(3010):     at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1740)

I've also tried the following and encountered the same error:

ImageButton submitBtn = (ImageButton)
             solo.getView(R.id.btn_next);  

and the following:

ImageButton submitBtn = (ImageButton)
             mainActivity.findViewById(R.id.btn_next);

and the following:

View submitBtn = solo.getView(R.id.btn_next);

but the issue remains the same.

Note that assertNotNull(submitBtn); does not results in failure ==> the button is actually there!

The layouts are as follows:
registration.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/Step1Layout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <include android:id="@+id/layout_navibar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@id/layout_headbar"
        layout="@layout/navibar" />
</RelativeLayout>

navibar.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="5dp"
    android:background="#cc0000" >

    <ImageButton
        android:id="@+id/btn_back"
        android:contentDescription="@string/btn_back"
        android:background="@android:color/transparent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/ic_navi_home" 
        android:visibility="invisible" />


    <ImageButton
        android:id="@+id/btn_next"
        android:contentDescription="@string/btn_next"
        android:background="@android:color/transparent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/ic_navi_next" />

    <TextView
        android:id="@+id/label_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/app_name"
        android:textColor="@android:color/white"
        android:textAppearance="?android:attr/textAppearanceMedium" />

</RelativeLayout>

solo.getImageButton(int index) is the index of the ImageButton and not the resource ID. Please see the Robotium Javadoc for more information.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM