android - robotium,如何测试 ListView

标签 android unit-testing robotium

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

我的 Activity 有一个方法:

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 做到这一点?

最好的问候

最佳答案

这是模拟框架的明显案例。我推荐 jMockit,因为它是最先进的,适合用于对付被淘汰的 android 库。由于您不喜欢测试 android 本身提供的类(您隐含地相信它们做正确的事),您只需要测试:

  • 您的存储库被要求提供值列表
  • 此值列表用于创建适配器
  • 此适配器已传递给 ListView

测试用例看起来像这样:

@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);

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

关于android - robotium,如何测试 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8266930/

相关文章:

Android 可调整工具栏大小以相应地在 Observable ScrollView 上滚动

Android 快速路径音频环回

c# - 如何为包含异步服务调用的 RelayCommand 编写单元测试?

unit-testing - karma-jasmine 在第一次失败后停止单元测试的命令

android - 如何在 robotium 中获取当前可见的 android.support.v4.app.Fragment

android - Robotium 和 Sherlock - NoClassDefFoundError

android - Youtube SDK 在加载实时视频时崩溃

java - 将文件移动到新位置然后删除以前的文件

javascript - 在单元测试期间检查指令中是否存在 html 元素

java - 点击(160.0,120.0)无法完成! (java.lang.SecurityException : Injecting to another application requires INJECT_EVENTS permission)