如何通过 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/