我正在尝试通过遍历列表并单击每个列表元素以启动另一个 Activity 来在 Robotium 中运行一些自动化测试。我的测试方法中有以下代码:
代码:
solo.assertCurrentActivity("Wrong activity", MainActivity.class);
//Clicks on the action bar tab
solo.clickOnText("Charts");
ArrayList<ListView> list = solo.getCurrentListViews();
for(int i = 0; i < list.size(); i++) {
//Clicks on the list item assert that the new activity is started
solo.clickInList(chartPosition);
solo.assertCurrentActivity("Json Class", JsonActivity.class);
//Go back to the list
solo.goBack();
}
上面的代码没有点击任何列表项,JUnit 测试结果显示所有测试都已通过,这非常令人困惑。
有人知道如何在 Robotium 中成功地遍历列表吗?
我看到了另一个与此类似的问题,但答案建议查看 jMock 而不是帮助。
最佳答案
我看到了几个问题:
- 代码遍历 Activity 中的所有 ListView ,但未对当前 ListView 执行任何操作。
- 由于代码不显示 chartPosition 的值,因此无法保证当前列表中有多少项。
- 我认为您需要等待新 Activity 加载。
试试这个:
for(int i = 0; i < list.size(); i++) {
assertTrue("There are no listviews in this activity.", list.size() > 0);
chartPosition = 0; // just to be safe, point at the first item in the list.
for(int i = 0; i < list.size(); i++) {
solo.clickInList(chartPosition, i); // Note that "i" identifies the ListView
solo.waitForActivity("name.of.the.expected.activity");
}
...
}
免责声明 - 此建议完全基于代码检查和 Robotium Solo Javadoc:http://www.jarvana.com/jarvana/view/com/jayway/android/robotium/robotium-solo/1.4.0/robotium-solo-1.4.0-javadoc.jar!/com/jayway/android/robotium/solo/Solo.html#clickInList(int)
关于android - 遍历列表并单击 Robotium 中的列表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15094105/