在编写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
答案 0 :(得分:1)
您还可以使用 .isShown()方法来获取可见性。
答案 1 :(得分:0)
我知道这有点晚了,但也许对其他人有用。 Robolectric 在一个线程上执行所有操作。过去,这是同步发生的。由于版本 4.3 Robolectric 具有 Looper PAUSED 模式,它改进了此博客中所述的行为:http://robolectric.org/blog/2019/06/04/paused-looper/