问题描述
我正在尝试测试模块中的活动.我只是想在测试方法中开始此活动,但是我总是有一个AssertionFailedError
.我在网上搜索了此问题,但找不到任何解决方案.感谢您的帮助.
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.
这是我的测试课:
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()方法仅需要在主线程上调用.
ActivityUnitTestCase's startActivity() method needs to be called on the main thread only.
这可以通过以下方式完成:
This can be done in the following ways:
-
在测试方法之前使用 @UiThreadTest 批注:
@UiThreadTest
public void testWebViewHasNotSetBuiltInZoomControls() throws Exception {
Intent intent = new Intent(getInstrumentation().getTargetContext(),
ContactActivity.class);
startActivity(intent, null, null);
}
使用 runOnMainSync 方法:
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);
}
});
}
这篇关于Android-ActivityUnitTestCase测试类中startActivity方法上的AssertionFailedError的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!