微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

由 Handler.postDelayed 启动的 Android 测试活动

如何解决由 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 举报,一经查实,本站将立刻删除。