9

我找到了一个名为 Robotium 的 Instrumentation Testing 工具。它对 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 等。

4

5 回答 5

15

有关 Robotium 支持的常见问题和答案,请参阅 QA wiki 页面:http ://code.google.com/p/robotium/wiki/QuestionsAndAnswers

另请访问入门页面:http ://code.google.com/p/robotium/wiki/Getting_Started

在那里,您将找到一个示例测试项目,您可以下载并查看它的想法。您还可以从以下网址下载 javadoc:http ://code.google.com/p/robotium/downloads/list以查看目前有哪些功能。

有关教程,请访问:http ://code.google.com/p/robotium/wiki/RobotiumTutorials

真诚的,雷纳斯

于 2010-02-22T19:15:24.550 回答
14

我可以说,你不能用 Robotium 做什么:)

  1. 交叉活动测试,Robotium 只能使用相同的证书应用程序,否则您将获得注入事件异常(例如,您无法在屏幕键盘上单击)

  2. Robotium 没有处理预期/意外警报/流行/对话的机制。例如,iOs javascript 测试具有非常简单的布尔标志和回调来处理警报

  3. Robotium 在自动滚动方法方面存在很大问题(目前可能已修复),例如,如果您正在寻找未显示的文本,Robotium 将在滚动视图的末尾堆叠并使 assertTrue(false) 停止滚动

  4. Robotium 具有用于报告问题/意外情况的 assertTrue(false) 逻辑,而不是返回一些枚举值或布尔值(成功/失败),因此对于 24/7 运行的良好压力测试,您需要添加自己的不会停止测试的方法, 只处理'method failed to click x y' 结果值

  5. 您将需要实现一些逻辑来单击滚动/列表视图中的项目。由于 Robotium 在视图中心单击,当您尝试单击仅显示 20% 部分的视图时,您将始终得到异常或 assertTrue(false)

总的来说,Robotium 非常酷且乐于助人,我非常喜欢它 :) 我无法想象没有这个伟大的图书馆的生活!

于 2011-04-05T11:50:01.323 回答
2

searchText 方法也搜索 ListViews。您可以将它与断言一起使用,以确保您的 ListViews 包含正确的内容

于 2010-02-25T20:31:13.060 回答
1

为了单击列表。如果您的活动是 ListActivity 类型,您可以使用带有一个参数的 clickInList,该参数是应单击的行的索引。在其他情况下,使用带有两个参数的 clickInList - listview 屏幕索引和行号。对于 WebView,如果您加载页面,您应该使用 waitForText() 方法来检查内容。

更多示例:http ://bitbar.com/blog/54/automated-ui-testing-android-applications-robotium

于 2010-07-16T08:18:03.940 回答
0
  • 意见

对于 listViews,您可以使用以下方法solo.getCurrentListViews()在当前屏幕上返回多个列表视图,然后迭代或从中获取其他对象类型(android 小部件),例如,您需要单击屏幕上所有列表中的图像视图,而不是将您重定向到另一个活动,并且只更改其他对象的状态:

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.GONEView.VISIBLEView.INVISIBLE进行比较。或者,您可以在执行测试之前使用 Java 方法HttpURLrequest检查连接。

  • 其他

如果您有来源,您可以从任何知道其 ID 的布局中获取对象!也存在很多很棒的东西,比如solo.waitForActivity(),,。solo.assertMemoryNotLow()solo.takeScreenShot()

加入Robotium 社区,您可以在此处找到有关Robotium使用的更多示例。

于 2012-11-24T13:19:32.603 回答