等待,轮询直到满足条件

Awaitatility, polling until condition is met

我正在尝试将等待性用于某些测试目的。

我尝试使用的这段代码给我带来了问题:

    await()
            .atLeast(Duration.ONE_HUNDRED_MILLISECONDS)
            .atMost(Duration.FIVE_SECONDS)
            .with()
            .pollInterval(Duration.ONE_HUNDRED_MILLISECONDS)
            .until(result.contains("banana"));

Result 是一个字符串变量,我在前面的代码中保存了一些远程系统输出。 但是当我尝试像这样使用它时,出现以下错误:

"until (java.util.concurrent.Callable) in ConditionFactory cannot be applied to (boolean)"

图书馆的正确使用方法是什么?在我对获取的数据进行一系列断言之前,我也想看看是否某些 data/text 字符串已经设法从我的远程系统中检索到。

until 需要一个 函数 ,returns 一个布尔值(即 Callable<Boolean>),而不仅仅是一个布尔值。

result.contains("banana") 是一个 returns 布尔值的方法调用。这意味着 .until(result.contains("banana")) 被评估为 .until(false).until(true)

您需要付出直到可赎回。即

await().until(() -> result.contains("banana"));