【问题标题】:Android tests are not executed未执行 Android 测试
【发布时间】:2013-04-04 23:38:00
【问题描述】:

我创建了一个测试项目,其代码与此处显示的完全相同:

http://developer.android.com/tools/testing/testing_ui.html

我已将 jar 文件上传到 android 虚拟设备中,现在可以运行测试了。但我总是在控制台上得到这个输出:

INSTRUMENTATION_STATUS:流=

WatcherResultPrinter=的测试结果

时间:0.0

正常(0 次测试)

INSTRUMENTATION_STATUS_CODE:-1


我还使用以下代码创建了一个简单的测试:

public void FailedTest() throws UiObjectNotFoundException {
    assertTrue("This test was executed", false);
}

如果使用 ui 元素的代码出现问题。

包名是Tests,类名是Login,所以我运行以下命令:

adb shell uiautomator runtest TestProject.jar -c Tests.Login

编辑

当我在真实设备上运行它时,我得到:

uiautomator:权限被拒绝

【问题讨论】:

    标签: android android-emulator adb android-testing android-uiautomator


    【解决方案1】:

    作为第一步,您能否更改测试方法的名称以匹配 jUnit 3 中使用的标准约定,即 public void testWhatever() { ... } 名称的前 4 个字母必须是小写的“test”,签名是公开的void 并且该方法不带任何参数。

    同样,您可以将包名称更改为更标准的小写约定,例如org.example.tests 如果您的文件名为 Tests.java(并且该类也称为 Tests),那么您应该可以按如下方式调用它:

    adb shell uiautomator runtest Tests.jar -c com.example.tests.Tests

    如果这些没有帮助,请您修改问题以包含您的 Tests.java 文件中的整个代码?

    注意:我在旅行时没有尝试在这个阶段重现您的代码。如果我的建议不能解决您的问题,我可以这样做。

    我会单独跟进uiautomator: permission denied。 UI Automator 测试确实在真实设备上运行。他们不需要设备被植根。我在标准的 Android 4.2.x 设备上运行它们。

    【讨论】:

    • 当我更改包和测试方法名称时,测试被执行。非常感谢。
    • 我的设备没有root。我还启用了 USB 调试。也许它是 android 版本(目前只在 2.3.x 上尝试过)。我会在 android 4 上试一试。谢谢你的帮助。
    • 是的,AFAIK 您需要 Android 4.1 或更高版本,为了节省您的时间和挫败感,我只是建议您使用 4.2.1 或 4.2.2 的设备(但 4.2 中有一个错误.2 与滚动有关,我已向 Google 报告)。
    • 我在 Android 4.0.x 上尝试过,但收到错误 /system/bin/sh: uiautomator: not found。在 Android 4.1.3 上,执行测试 NoSuchMethodError: UiScrollable.setAsHorizontalList 时出现异常。也许我只能在虚拟设备上运行它们:)
    • 不,不,不 :) 交易如下:UI Automator 是在 4.1 中引入的。然而,我的研究和其他人的总体印象是 4.1 的实现要么不完整,要么被破坏。 4.2 有一个合理的实现,应该可以在安装了 4.2 的设备上为您工作。但是,我在 4.2.2 中发现了一个自动滚动被破坏的错误。这是我写的一篇博客文章,讲述了我的经历以及滚动错误的解决方法blog.bettersoftwaretesting.com/?p=84
    猜你喜欢
    • 2018-05-05
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 2018-11-10
    • 1970-01-01
    • 2019-12-06
    • 2019-12-15
    相关资源
    最近更新 更多