如何解决由 Handler.postDelayed 启动的 Android 测试活动
我是使用 Roboelectric 测试框架的新手,我遇到的问题是无法构建活动。我在每个课程中都使用了相同的精确测试,它们按预期工作,除了依赖于 Handler.postDelayed 调用的 CallingActivity,我认为这是问题所在。
这是将创建 CallingActivity 的代码:
btnCall.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Handler().postDelayed(new Runnable()
{
@Override
public void run() {
Intent intent = new Intent(FakePhoneCallMenuActivity.this,CallingActivity.class);
intent.putExtra("callerName",nameEntryBox.getText().toString());
intent.putExtra("callerPhoneNum",phoneEntryBox.getText().toString());
intent.putExtra("callerVoice",voice);
startActivity(intent);
}
},timetoStart);
}
});
这是对出现问题的 CallingActivity 的测试:
@RunWith(RobolectricTestRunner.class)
@Config(sdk = {Build.VERSION_CODES.O_MR1})
public class CallingTest {
private CallingActivity activity;
@Before
public void setUp() throws Exception {
activity = Robolectric.buildActivity(CallingActivity.class)
.create()
.start()
.resume()
.get();
}
@Test
public void acceptCallButtonClickShouldStartNewActivity() throws Exception {
ShadowActivity shadowActivity = shadowOf(activity);
ImageButton button = (ImageButton) shadowActivity.getContentView().findViewById(R.id.btnAcceptCall);
button.callOnClick();
Intent startedIntent = shadowActivity.getNextStartedActivity();
ShadowIntent shadowIntent = shadowOf(startedIntent);
assertEquals(FakePhoneCallMenuActivity.class,shadowIntent.getIntentClass());
}
}
我在尝试运行此测试后收到的问题是:
java.lang.Exception: Main looper has queued unexecuted runnables.
对此的帮助将不胜感激!
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。