2016-04-22 3 views
2

При написании теста модуля Robolectric я заметил, что мой getVisibility() вызов был вызван 0 (VISIBLE) после вызова fab.hide(), поэтому я предположил, что это связано с анимацией и протестировать ее, добавлено с задержкой проверки. Удивительно, но он также вернулся ВИДИМО. На самом устройстве он работает как ожидалось и возвращает правильные значения.Проверка видимости Android FAB всегда возвращает VISIBLE из тестового корпуса Robolectric

EDIT: просто для уточнения Я использую FAB из библиотеки поддержки дизайна.

Мой тестовый код очень прост:

 fab.performClick(); 
     ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); 
     assertThat(fab.isShown()).isFalse(); 

Код тестируемой:

 mActionBunnot.hide(); 
     new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       boolean shown = mActionBunnot.isShown(); 
       Log.d(TAG,""+shown); 
      } 
     },2000); 

При запуске через Robolectric как здесь, так и в тесте, isShown возвращает true

+0

Если вы прокомментируете свой обработчик, вы получите 'isShown()' false в тесте? –

+0

Нет, это всегда так. – vkislicins

+0

Вы решили это? –

ответ

0

Вы можете тоже .isShown() способ получить видимость.

+0

Хм, я по-прежнему получаю истинное от этого ... Обновит мой вопрос еще несколькими подробностями – vkislicins