Awaitility で指定された時間以上待機するにはどうすればいいですか? 質問する

Awaitility で指定された時間以上待機するにはどうすればいいですか? 質問する

私のテスト クラスでは、実際に一定時間スリープする必要があります。これは、定期的なリモート呼び出しを伴う統合テストです。

for (int i = 0; i < 16; i++) {
    // sleep some... should sleep some...
    Thread.sleep((int) TimeUnit.MINUTES.toMillis(4L)); // means as it means.
    // call remote api and check the response.
}

Awaitility を使用した同等の表現は何ですか?

私は試した...

// Let's sleep for 4 minutes, no matter what happen!
Awaitility.await()
        .atLeast(Duration.ofMinutes(4L)) // what the hell does this mean, anyway?
        .untilTrue(new AtomicBoolean(false));

デフォルトのポーリング間隔の直後にタイムアウトが発生したようです。

この場合、最初に Awaitillity を使用するべきではないでしょうか?

ベストアンサー1

おそらく答えとしては遅すぎるかもしれませんが、それを実行する方法はいくつかあります。

これは、awaitility に 4 分間のポーリング遅延を指示します。したがって、アサーションを実行する前に 4 分間待機します。

Awaitility
    .await()
    .pollDelay(4, TimeUnit.MINUTES)
    .untilAsserted(() -> Assert.assertTrue(true));

おすすめ記事