使用导航抽屉的应用程序的Robotium UI测试

Art*_*lin 18 android robotium navigation-drawer

我们Navigation Drawersupport.v4图书馆获得了应用程序.我们自动进行UI测试Robotium并且一切正常,但Navigation Drawer可以随机冻结,因此某些测试可能会随机失败.

这绝对不是Robotium问题,因为我看到了如何Navigation Drawer在我的设备上的其他应用程序中冻结,也在我自己的应用程序中.

我已经尝试过修复Navigation Drawer此问题的答案:为什么DrawerLayout有时会在打开时出现故障?

它帮助和随机冻结从90%减少到大约10%,但10%的测试运行可能会失败,这非常糟糕,特别是对于持续集成...

可能有人已经解决了这个问题吗?

swa*_*son 3

我在 Robotium 测试中遇到了同样的问题,我最终采用的解决方案是模拟拖动手势(真实用户如何滑动打开抽屉),而不是尝试单击抽屉开关或使用方法solo。我似乎更频繁地注意到运行早于 SDK 18 的 Android 的设备上出现间歇性故障。

我将此方法放在我们自己的子类中Solo,从那以后我们就没有进行过失败的测试(超过数百次运行)。

/**
 * Open the navigation drawer with a drag gesture. Click based triggering is
 * flaky on SDK < 18
 */
public void openNavigationDrawer() {
    Point deviceSize = new Point();
    getCurrentActivity().getWindowManager().getDefaultDisplay().getSize(deviceSize);

    int screenWidth = deviceSize.x;
    int screenHeight = deviceSize.y;
    int fromX = 0;
    int toX = screenWidth / 2;
    int fromY = screenHeight / 2;
    int toY = fromY;

    this.drag(fromX, toX, fromY, toY, 1);
}
Run Code Online (Sandbox Code Playgroud)