2

我如何通过robotium测试listview?我只想检查项目是否进入 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"));
}

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

最好的祝福

4

1 回答 1

1

这是模拟框架的明显案例。我推荐 jMockit,因为它是最先进的并且适合用于对抗 stubbed 的 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);

}

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

于 2011-11-25T11:16:58.273 回答