robotium,如何测试listview

时间:2011-11-25 09:20:49

标签: android unit-testing robotium

如何通过robotium测试listview?我只想检查项目是否进入oncreate事件。

我的活动有一个方法:

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

MyRepository返回List。在ActivityInstrumentationTestCase2中,我想将一些项放入存储库,然后测试listView是否包含元素。

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

是否可以通过机器人做到这一点?

最好的问候

1 个答案:

答案 0 :(得分:1)

这是模拟框架的明显案例。我推荐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);

}

(请注意我调整了界面以便于模拟)