我实际上正在尝试在使用以下类的 AndroidJunit 测试项目中实现一个简单的测试套件
- 用户界面对象
- 用户界面选择器
- UiAutomator 测试用例
在 Android 设备上单击并打开 Messaging 应用程序,然后在 Eclipse 中将其作为 AndroidJunit Test 运行。
运行代码时出现以下异常
java.lang.RuntimeException: Stub!
我不明白我哪里错了。请让我知道我们是否可以使用 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)
您需要在 Android 设备上运行测试。为此,代码需要为 dexed。在它可以运行之前,等等。阅读更多 here关于如何构建在 Android 上运行的测试。
像这样运行测试
adb shell uiautomator runtest <JARS> -c <CLASSES> [options]
来自official documentation .
To run your testcases on the target device, you can use the adb shell command to invoke the uiautomator tool.
我是一名优秀的程序员,十分优秀!