У меня следующая проблема.Я делаю юнит-тесты для кастомного DialogFragment
.Этот диалог имеет Scrollview
.при достижении конца которого ViewSwitcher
должен переключать вид.
Вот слушатель прокрутки:
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
и Mockito
для модульного тестирования .