Сводка : Решение состоит в том, чтобы указать большую высоту устройства для этого теста с аннотацией @Config(qualifiers="h780dp")
.
Подробности : После некоторой отладки я обнаружилчто в Robolectric 4.2.1 высота ListView
была 146
(top=680
, bottom=826
), а в Robolectric 4.3 - 0
(top=680
, bottom=680
).Высота устройства по умолчанию, используемая Robolectric, составляет 470
, что недостаточно для отображения списка.Список не имеет дочерних представлений с Robolectric 4.3.
Реализация shadowOf(list).performItemClick(0)
найдена в ShadowAdapterView
от robolectric и составляет:
public boolean performItemClick(int position) {
return realAdapterView.performItemClick(realAdapterView.getChildAt(position),
position, realAdapterView.getItemIdAtPosition(position));
}
С Robolectric 4.3,getChildAt(position)
возвращает null
, то есть то, что пересылается прослушивателю щелчков.
Обходной путь - указать экран большего устройства для этого теста.Например:
@Test
@Config(qualifiers="h780dp")