5

我实际上是在尝试在使用以下类的 AndroidJunit 测试项目中实现一个简单的测试套件

  • 对象
  • 用户界面选择器
  • UiAutomatorTestcase

单击并打开 Android 设备上的消息传递应用程序,并在 Eclipse 中将其作为 AndroidJunit Test 运行。

运行代码时出现以下异常

java.lang.RuntimeException:存根!

我不明白我要去哪里错了。请让我知道我们是否可以使用 AndroidJuint 测试项目运行 UiAutomatorTestcase 测试套件。

这是示例代码和故障跟踪

public class UiautomatorTest extends
        ActivityInstrumentationTestCase2<MyMainActivity> {

    UiAutomatorTestCase mUiAutomatorTestCase;

    public UiautomatorTest() {
        super(MyMainActivity.class);`enter code here`
        // TODO Auto-generated constructor stub
    }

    @Override
    protected void setUp() throws Exception {
        // TODO Auto-generated method stub
        super.setUp();
        mUiAutomatorTestCase = new UiAutomatorTestCase();
    }

    public void testToOpenMessageApp() throws UiObjectNotFoundException {
        UiObject message = new UiObject(
                new UiSelector().description("Messaging"));
        message.clickAndWaitForNewWindow();

        UiObject composeMessage = new UiObject(
                new UiSelector().description("compose"));
        composeMessage.clickAndWaitForNewWindow();

        UiObject typeMessage = new UiObject(
                new UiSelector().description("Type Message"));
        typeMessage.clickAndWaitForNewWindow();
        mUiAutomatorTestCase.getUiDevice().pressHome();

    }

}

堆栈跟踪

java.lang.RuntimeException: Stub!
at mypackagename.UiAutomatorTestCase.<init>(UiAutomatorTestCase.java:5)
at mypackagename..setUp(UiautomatorTest.java:25)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1584)
4

4 回答 4

4

您需要在安卓设备上运行测试。为此,需要对代码进行dexed才能运行等。在此处阅读有关如何构建测试以在 android 上运行的更多信息。

像这样运行测试

adb shell uiautomator runtest <JARS> -c <CLASSES> [options]

来自官方文档

要在目标设备上运行测试用例,可以使用 adb shell 命令调用 uiautomator 工具。

于 2013-07-27T19:05:22.220 回答
2

Android 4.3 包含一种从 Instrumentation http://developer.android.com/reference/android/app/Instrumentation.html#getUiAutomation()与 UIAutomation 交互的方法,该主题在http://developer.android.com/进行了介绍关于/versions/android-4.3.html#Testing

这似乎是 UI 测试自动化的另一种风格。我想了解更多关于 4.3 的 UIAutomation 和 UIAutomator 的交互http://developer.android.com/tools/help/uiautomator/index.html

于 2013-08-02T07:44:10.853 回答
1

您可以将 like 脚本与 .sh 一起使用

 ant build

 $youtSdkPath/platform-tools/adb  shell     rm /data/local/tmp/ProjectName.jar
 $youtSdkPath/platform-tools/adb  push  $pathProject/bin/ProjectName.jar /data/local/tmp/
 $youtSdkPath/platform-tools/adb  shell     uiautomator runtest ProjectName.jar -c ClassToTest

bash theScript.sh

于 2015-02-11T18:44:53.593 回答
1

作为标准,UI Automator 测试被编译并构建到 jar 文件中,在台式计算机上,然后通过使用 adb 将 jar 文件推送到设备来将它们部署到设备。然后它们在设备上运行,在 Android 运行时中使用adb shell uiautomator ...感谢https://stackoverflow.com/users/363437/vidstige纠正了我之前不准确的帖子。

可能帮助您运行测试的最快方法是将代码作为问题的一部分发布。

2013 年 7 月 22 日更新我没有看到其他人试图直接在设备上运行测试用例,而不是按照 Google (Android) 文档的方法构建它们。这可能是可能的,但是您可能必须努力发现您的方法是否可行或可行。UIAutomator 与 Android InstrumentationTestCase 框架截然不同。相反,它与 GUI 交互,并具有能够与广泛的应用程序交互的优势,包括 Android 设备上的内置设置 UI 之类的东西。

我建议您从 Android 开发站点http://developer.android.com/tools/testing/testing_ui.html中的文档教程开始,看看您是否可以使其正常工作。您需要使用运行 Android 4.2 的设备(或更新版本的 Android 发布时阅读本文的人)。一旦你完成了本教程,我希望这将是一个很好的起点,可以为你打算为其编写自动化测试的任何应用程序编写 UIAutomator 测试。

欢迎您发布另一个更新。

于 2013-07-19T21:55:37.483 回答