我刚开始使用Espresso来测试Android应用程序,但我遇到了一些麻烦。我有一个按钮,以通常的方式取代片段的活动:Android Espresso不会等待片段加载
public void onClick(View v) {
final FragmentTransaction t = getFragmentManager().beginTransaction();
t.setCustomAnimations(R.animator.fragment_slide_in_up, 0);
t.replace(R.id.fragment_container,
LogInFragment.newInstance(), LogInFragment.TAG)
.addToBackStack(LogInFragment.TAG);
t.commit();
}
在我的测试,我点击在新片段发送按钮,然后只需检查新片段是可见的。
onView(withId(R.id.login_btn))
.perform(click());
Thread.sleep(500);
onView(withId(R.id.email_input))
.check(matches(isDisplayed()));
如果我从测试中删除Thread.sleep()
,测试失败,即使我从活动代码中删除setCustomAnimations()
。
根据说明,我的手机上的所有动画都已关闭。我的理解是,Espresso知道UI线程状态,并会等待一切准备就绪。但如果我做了onView(withId(R.id.widgetOnNewFragment))
它每次都会爆炸。每次显示新片段时,我都需要添加一个Thread.sleep(500)
。
我错过了什么吗?我想我不应该添加数十个Thread.sleep()到我的测试代码。
使用IdlingResource –