Android robotium,如何测试listview
如何通过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
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以获取帮助,但我无法在活动之前加载数据