检查Android FAB可见性始终从Robolectric测试用例返回VISIBLE

时间:2016-04-22 12:05:30

标签: android robolectric

在编写Robolectric单元测试时,我注意到在调用getVisibility()后我的fab.hide()调用返回0(VISIBLE),所以我认为这是由于动画并测试它,添加了延迟检查。令人惊讶的是它也恢复了可见性。在实际设备上,它按预期工作并返回正确的值。

编辑:只是为了澄清我正在使用设计支持库中的FAB。

我的测试代码非常简单:

        fab.performClick();
        ShadowLooper.runUiThreadTasksIncludingDelayedTasks();
        assertThat(fab.isShown()).isFalse();

受测试代码:

        mActionBunnot.hide();
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                boolean shown = mActionBunnot.isShown();
                Log.d(TAG,""+shown);
            }
        },2000);

当在此处和测试中通过Robolectric运行时,isShown会返回true

2 个答案:

答案 0 :(得分:1)

您还可以使用 .isShown()方法来获取可见性。

答案 1 :(得分:0)

我知道这有点晚了,但也许对其他人有用。 Robolectric 在一个线程上执行所有操作。过去,这是同步发生的。由于版本 4.3 Robolectric 具有 Looper PAUSED 模式,它改进了此博客中所述的行为:http://robolectric.org/blog/2019/06/04/paused-looper/