小编Rab*_*bel的帖子

Android测试Handler.postDelayed

我是Android上的新手并且在测试SplashScreen时遇到困难,基本上我正在做的是试图测试启动屏幕持续3秒.这是splashScreen的代码

@Override
protected void onStart() {
    super.onStart();

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            Intent i = new Intent(SplashScreenActivity.this, MainActivity.class);
            startActivity(i);
            finish();
        }
    }, SPLASH_TIME_OUT);
}
Run Code Online (Sandbox Code Playgroud)

这是我测试的方法:

@Test
public void splashScreenTimerTest() throws InterruptedException {
    StopWatch timer = new StopWatch();
    timer.start();

    splashScreenActivityController.start();

    timer.stop();
    long expected = 3000L;
    assertThat(String.format("The spalash screen run for longer than expected. It should stay on for [%d] but it run for [%d]",expected,timer.getTime()),timer.getTime(),equalTo(expected));
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Android + Robolectric进行测试.

我已经谷歌搜索了几天,我尝试了很多东西,但根本没有结果.我尝试获取UI线程并等待它.我试图让你的调度程序获取队列,看看那里是否有任何任务.但根本没有结果.

任何建议如何让我的测试等到新活动被触发?

谢谢

android unit-testing handler postdelayed robolectric

9
推荐指数
2
解决办法
6450
查看次数