Действие прокрутки для ScrollView не работает при модульном тестировании - PullRequest
0 голосов
/ 09 мая 2019

У меня следующая проблема.Я делаю юнит-тесты для кастомного 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 для модульного тестирования .

...