我有以下问题。我正在为 custom进行单元测试DialogFragment
。此对话框有一个Scrollview
. 当到达终点时,aViewSwitcher
必须切换视图。
这是滚动监听器:
ViewSwitcher vs = getDialog().findViewById(R.id.vs);
scrollView.getViewTreeObserver()
.addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
if (scrollView.getChildAt(0).getBottom()
<= (scrollView.getHeight() + scrollView.getScrollY())) {
vs.setDisplayedChild(1);
} else {
vs.setDisplayedChild(0);
}
}
});
测试设置方法:
@Before
public void setUp() throws Exception {
activity = Robolectric
.buildActivity(FragmentTestActivity.class)
.create()
.resume()
.get();
subject = MemberConsentModal.newInstance("long text");
subject.show(activity.getSupportFragmentManager(), MemberConsentModal.TAG);
}
以及测试方法代码:
@Test
public void onScrolledToTopBottom_showOptionButtons() {
final ScrollView scrollView = subject.getDialog().findViewById(R.id.member_consent_content);
ViewSwitcher vs = subject.getDialog().findViewById(R.id.vs);
scrollView.fullScroll(ScrollView.FOCUS_DOWN);
assertThat(vs.getDisplayedChild()).isEqualTo(1);
}
调试时,我发现它addOnScrollChangedListener
从未被调用,但是,当在模拟器上启动应用程序时,就像在物理设备上一样,它工作正常。如何使滚动视图在测试模式下滚动?
PS。我正在使用Robolectric
andMockito
进行单元测试。