Как заставить Robolectric выбрать конкретный элемент счетчика

Я новичок в Robolectric и нахожусь на контрольно-пропускном пункте. У меня есть какое-то пользовательское событие, которое срабатывает при выборе элемента в счетчике, и я хочу проверить это с помощью robolectric. Я видел, что класс ShadowSpinner предоставляет вспомогательную функцию, такую ​​​​как stateSpinner.clickFirstItemContainingText, чтобы щелкнуть определенный элемент. Я заполняю свой счетчик правильными значениями, которые я тестирую, распечатывая каждый элемент как

 for (int i = 0; i < spinner_items.length; ++i) {
            spinner_items[i] = (String) spinner.getAdapter().getItem(i);
        }
 System.out.println("Spinner Items "
                + Arrays.asList(spinner_items).toString());

Однако когда я использую clickFirstItemContainingText с одним из заполненных значений, я получаю исключение IllegalArgumentException. Не найден элемент, содержащий тест, что странно, так как приведенный выше код показывает, что конкретное значение существует.

Любая помощь будет принята с благодарностью


person Ritesh Kadmawala    schedule 18.05.2013    source источник


Ответы (1)


Я не мог заставить Robolectric работать со спиннерами. Проблема в том, что представления для элементов списка в счетчике не будут существовать, кроме выбранного. Это можно увидеть, поскольку spinner.getChildCount() всегда будет возвращать 1. Просто вызовите spinner.setSelection().

person Daniel    schedule 18.02.2014
comment
Чтобы обосновать ваш ответ, здесь тест для объекта Spinner's Shadow, обратите внимание, как используется setSelection(). - person EmmanuelMess; 03.07.2018