robotium, как проверить просмотр списка - PullRequest
2 голосов
/ 25 ноября 2011

как я могу проверить просмотр списка по robotium? Я просто хочу проверить, попадает ли в событие oncreate предметы.

моя активность имеет метод:

private void initListView() {
    Adapter adapter = 
            new Adapter(this, myRepository.findAll());
    listView.setAdapter(adapter);
}

MyRepository возвращает список. В ActivityInstrumentationTestCase2 я хочу поместить некоторые элементы в репозиторий и затем проверить, содержит ли listView элементы.

public void testListView_IsNotEmpty() {
    Item i = new Item();
    i.setSomething("item1");
    getActivity().getMyRepository().insert(i);
    assertTrue(solo.searchText("item1"));
}

Возможно ли это сделать через robotium?

С наилучшими пожеланиями

1 Ответ

1 голос
/ 25 ноября 2011

Это понятный случай для насмешливых рамок. Я рекомендую jMockit, так как он наиболее продвинутый и подходит для использования против заглушенных библиотек Android. Поскольку вы не любите тестировать классы, предоставляемые самим android (вы косвенно полагаете, что они поступают правильно), вам нужно только протестировать это:

  • в вашем хранилище запросили список значений
  • этот список значений использовался для создания адаптера
  • этот адаптер был передан в список

Тестовый пример будет выглядеть так:

@Test
public void testThatListInitializedProperly(@Mocked final ListView listView,
                                            @Mocked final YourRepository repository,
                                            @Mocked(methods = {"initListView"}, inverse=true) final YourActivity activity, 
                                            @Mocked final Adapter adapter
 ) {
    new Expectations() {
        {
               repository.findAll(); returns(someList);

               new Adapter(activity, someList); returns(adapter);

               listView.setAdapter(adapter);

        }
    };

    activity.initListView(listView);

}

(обратите внимание, что я настроил интерфейс для облегчения насмешки)

...