我正在用Robolectric-2.3为我的项目编写测试。
我想测试我的UI属性,例如视图可见性。显示/隐藏视图的操作包含在动画中。怎么测试呢?
我试图使用ShadowSystemClock.sleep()方法等到动画结束但它似乎没有像我预期的那样工作。
@Test
public void testHideSearch() throws Exception {
mListFragment.hideSearch(); //<--- animation launched here
sleep(1000);
View searchEditText = mListFragment.getView().findViewById(R.id.filterEditText);
assertFalse(searchEditText.getVisibility() == View.VISIBLE);
}
这个问题的正确方法是什么?
尝试使用此而不是睡眠:
Robolectric.getUiThreadScheduler.advanceBy(1000);
如果您使用Animator,您的方法应该有效,但如果您使用动画,则需要使用ShadowAnimation。假设在onAnimationEnd()中更改了视图的实际可见性,则以下内容应该起作用:
ShadowAnimation animation = Robolectric.shadowOf(searchEditText.getAnimation());
animation.invokeEnd();