在ActivityUnitTestCase测试类的startActivity方法上出现AssertionFailedEr



我正在尝试测试一个模块中的活动。我只是想在测试方法中启动这个活动,但是我总是有一个AssertionFailedError。我在网上搜索了这个问题,但没有找到任何解决方案。如有任何帮助,不胜感激。

这是我的测试类:

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

错误如下:

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)

问候。

ActivityUnitTestCase的startActivity()方法只需要在主线程上调用。

这可以通过以下方式完成:

  1. 在测试方法之前使用@UiThreadTest注释:

    @UiThreadTest
    public void testWebViewHasNotSetBuiltInZoomControls() throws Exception {
        Intent intent = new Intent(getInstrumentation().getTargetContext(),
                ContactActivity.class);
        startActivity(intent, null, null);
    }
    
  2. 使用Instrumentation类的runOnMainSync方法:

    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);
               }
            });
     }
    

为什么我是对的?

相关内容

  • 没有找到相关文章

最新更新