Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android robotium,如何测试listview_Android_Unit Testing_Robotium - Fatal编程技术网

Android robotium,如何测试listview

Android robotium,如何测试listview,android,unit-testing,robotium,Android,Unit Testing,Robotium,如何通过robotium测试listview?我只想检查一下,一旦创建事件,项目是否会进入其中 我的活动有一个方法: private void initListView() { Adapter adapter = new Adapter(this, myRepository.findAll()); listView.setAdapter(adapter); } MyRepository返回列表。在ActivityInstrumentationTestC

如何通过robotium测试listview?我只想检查一下,一旦创建事件,项目是否会进入其中

我的活动有一个方法:

private void initListView() {
    Adapter adapter = 
            new Adapter(this, myRepository.findAll());
    listView.setAdapter(adapter);
}
MyRepository返回列表。在ActivityInstrumentationTestCase2中,我想将一些项放入respository,然后测试listView是否包含元素

public void testListView_IsNotEmpty() {
    Item i = new Item();
    i.setSomething("item1");
    getActivity().getMyRepository().insert(i);
    assertTrue(solo.searchText("item1"));
}
通过机器人能做到这一点吗


致以最诚挚的问候

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


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

在测试用例中调用
getActivity()
之前,您可以访问存储库吗?只需在前面添加文本,在实际调用
getActivity()
之前不会创建活动。否则,请在适配器中注册一个
DataSetObserver
,并在处理存储库时调用它。thx以获取帮助,但我无法在活动之前加载数据