Question

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>
Was it helpful?

Solution

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top