Android - AssertionFailedError on startActivity method in ActivityUnitTestCase test class

activityunittestcase, android, assertion, start-activity, unit-testing

Solution

ActivityUnitTestCase's startActivity() method needs to be called on the main thread only.

This can be done in the following ways:

Use the @UiThreadTest annotation before your test method:

@UiThreadTest
public void testWebViewHasNotSetBuiltInZoomControls() throws Exception {
    Intent intent = new Intent(getInstrumentation().getTargetContext(),
            ContactActivity.class);
    startActivity(intent, null, null);
}

Use the runOnMainSync method of the Instrumentation class:

public void testWebViewHasNotSetBuiltInZoomControls() throws Exception {
    final Intent intent = new Intent(getInstrumentation().getTargetContext(),
            ContactActivity.class);

    getInstrumentation().runOnMainSync(new Runnable() {
        @Override
        public void run() {
            startActivity(intent, null, null);
           }
        });
 }

Why am I right?

Problem

I am trying to test an activity in a module. I am just trying to start this activity in the test method, but I always have a `AssertionFailedError`. I searched the web for this issue but could not find any solution. Any help is appreciated. This is my test class: ``` public class ContactActivityTest extends ActivityUnitTestCase<ContactActivity> { public ContactActivityTest() { super(ContactActivity.class); } @Override public void setUp() throws Exception { super.setUp(); } public void testWebViewHasNotSetBuiltInZoomControls() throws Exception { Intent intent = new Intent(getInstrumentation().getTargetContext(), ContactActivity.class); startActivity(intent, null, null); } @Override public void tearDown() throws Exception { super.tearDown(); } } ``` And this is the error: ``` junit.framework.AssertionFailedError at android.test.ActivityUnitTestCase.startActivity(ActivityUnitTestCase.java:147) at com.modilisim.android.contact.ContactActivityTest.testWebViewHasNotSetBuiltInZoomControls(ContactActivityTest.java:29) at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214) at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176) at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1763) ``` Regards.

Original source