我找到了一个名为Robotium的仪器测试工具。它对于Android应用程序的黑盒测试来说简单易行。 我们可以按如下方式使用它:
solo.clickOnText("Other");
solo.clickOnButton("Edit");
assertTrue(solo.searchText("Edit Window"));
solo.enterText(1, "Some text for testing purposes")
solo.clickOnButton("Save");
assertTrue(solo.searchText("Changes have been made successfully"));
solo.clickOnButton("Ok");
assertTrue(solo.searchText("Some text for testing purposes"));
任何人都可以对此有更多了解吗? 任何人都可以告诉我们如何将它用于webviews和listviews等。
答案 0 :(得分:15)
有关Robotium支持的常见问题和解答,请参阅质量检查维基页面:http://code.google.com/p/robotium/wiki/QuestionsAndAnswers
另请访问“使用入门”页面:http://code.google.com/p/robotium/wiki/Getting_Started
在那里,您将找到一个示例测试项目,您可以下载并查看想法。您也可以从http://code.google.com/p/robotium/downloads/list下载javadoc,看看目前有哪些功能。
有关教程,请访问:http://code.google.com/p/robotium/wiki/RobotiumTutorials
此致 Renas
答案 1 :(得分:14)
我可以说,你无法用Robotium做什么:)
跨活动测试,Robotium只能使用相同的证书应用程序,否则您将获得注入事件异常(例如,您无法对屏幕键盘进行点击)
Robotium没有处理预期/意外警报/ popus /对话的机制。例如,iOs javascript测试具有非常简单的布尔标志和用于处理警报的回调
Robotium在自动滚动方法(可能目前已修复)方面存在很大问题,例如,如果您要查找未显示的文本,Robotium将在滚动视图的末尾堆叠并生成assertTrue( false)停止滚动
Robotium具有assertTrue(false)逻辑,用于报告问题/意外情况,而不是返回一些Enum值或布尔值(成功/失败),因此对于每周7天,每天24小时运行的良好压力测试,您需要添加自己的方法不会停止测试,只是处理'方法无法点击xy'结果值
您需要实现一些逻辑来单击滚动/列表视图中的项目。由于Robotium点击了视图的中心,当你尝试点击仅显示20%部分的视图时,你总会得到异常或assertTrue(false)
一般来说,Robotium非常酷,乐于助人,我非常喜欢:)我无法想象没有这个伟大图书馆的生活!
答案 2 :(得分:2)
searchText方法也搜索ListViews。您可以将它与断言一起使用,以确保ListView包含正确的内容
答案 3 :(得分:1)
要点击列表。如果您的活动是ListActivity类型,则可以将clickInList与一个参数一起使用,该参数是应该单击的行的索引。在其他情况下,使用带有两个参数的clickInList - listview屏幕索引和行号。 对于WebView,如果您加载页面,则应使用waitForText()mathod来检查内容。
更多示例:http://bitbar.com/blog/54/automated-ui-testing-android-applications-robotium
答案 4 :(得分:0)
对于listViews,您可以使用以下方法solo.getCurrentListViews()
在当前屏幕上返回许多列表视图,然后从中迭代或获取其他对象类型( android widgets )例如,您需要从屏幕上的所有列表中单击图像视图,这不会将您重定向到另一个活动,只会更改其他对象的状态:
ArrayList<ListView> lw = solo.getCurrentListViews(); // get all list views
// logging to logcat
Log.i("stats", "number of list views on the current screen: " + aLw.size());
if (aLw.size() != 0)
for (ListView l: aLw) {
// Take all image views from list and click each
ArrayList <ImageView> aIw = solo.getCurrentImageViews(l);
Log.i("stats", "list view " + l + " contains " + iw.size() + " image views.");
if (aIw.size() != 0)
for (int i = 0; i < aIw.size(); ) {
// clicking
solo.clickOnView(aIw.get(i));
Log.i("click", "image view " + i " clicked.");
}
}
您可以键入文本到 editText 视图或从textViews获取文本。 您可以将Robotium与Java和Android API结合使用。例如,使用 getVisibility()方法检查屏幕上图像的可见性,并将其与三个主要状态 View.GONE , View.VISIBLE 进行比较, View.INVISIBLE 。或者,您可以在执行测试之前使用Java方法 HttpURLrequest 检查连接。
如果您有源,您可以从任何布局中获取知道其ID的对象!还存在许多令人敬畏的内容,例如solo.waitForActivity()
,solo.assertMemoryNotLow()
,solo.takeScreenShot()
。
您可以通过加入Robotium community找到有关 Robotium 用法的更多示例。