在UiAutomatorTestCase中调用getUiDevice()时,我得到null。
public class DemoTestCase extends UiAutomatorTestCase{
public void testDemo() {
assertTrue(getUiDevice().pressHome());
Bundle status = new Bundle();
status.putString("msg", "This is a demo test and I just pressed HOME");
status.putString("product", getUiDevice().getProductName());
Point p = getUiDevice().getDisplaySizeDp();
status.putInt("dp-width", p.x);
status.putInt("dp-height", p.y);
getAutomationSupport().sendStatus(Activity.RESULT_OK, status);
}
}
我尝试了不同的示例并且总是变为null,但我没有获得UI设备。此测试是从应用程序的主Java类调用的。
我在运行uiautomator测试时使用了一个android VirtualBox。我使用adb push发送应用程序并使用adb shell运行uiautomator runtest my.jar -c my.main.Class
如果我不使用getUiDevice()
,一切正常。
答案 0 :(得分:0)
如果你从另一个类调用getUiDevice()
,你必须在构造函数中声明你的变量并从原始类中调用它。
public class OriginalClass extends UiAutomatorTestCase {
public void runTestInAnotherClass() {
DemoTestCase demoTestCase = new DemoTestCase(getUiDevice());
testDemo();
}
}
public class DemoTestCase extends UiAutomatorTestCase{
UiDevice uiDevice;
public DemoTestCase(UiDevice device) {
uiDevice = device;
}
public void testDemo() {
assertTrue(device.pressHome());
Bundle status = new Bundle();
status.putString("msg", "This is a demo test and I just pressed HOME");
status.putString("product", device.getProductName());
Point p = device.getDisplaySizeDp();
status.putInt("dp-width", p.x);
status.putInt("dp-height", p.y);
getAutomationSupport().sendStatus(Activity.RESULT_OK, status);
}
}