改变方向-代替睡眠

时间:2018-10-21 11:17:03

标签: java android integration-testing sleep

我正在尝试进行测试,该测试会在更改方向后检查应用程序的行为。

  for (int i = 0; i < 100; i++) {
            mActivityTestRule.getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
            Thread.sleep(3000);
            mActivityTestRule.getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            Thread.sleep(3000);
        }

没有sleep的速度太快-我的UI无法在下一次更改方向之前加载所有内容。 但是呢Thread.sleep看起来不好

如何更好地编写代码?我应该怎么做而不是睡不着呢?

1 个答案:

答案 0 :(得分:0)

如果您知道如何检查UI是否已完全加载,则可以使用忙等待:

busyWaitFor(() -> isUILoaded(), 10000, 200);

busyWaitFor的实现如下:

private static boolean busyWaitFor(BooleanSupplier condition, int timeoutMilSec, int checkIntervalMilSec) {
    long startTime = System.currentTimeMillis();

    boolean interrupted;
    do {
        if (condition.getAsBoolean()) {
            return true;
        }

        boolean timeoutReached = System.currentTimeMillis() - startTime >= (long)timeoutMilSec;
        if (timeoutReached) {
            return false;
        }

        interrupted = sleep(checkIntervalMilSec);
    } while(!interrupted);

    return false;
}