等待性,轮询直到满足条件

时间:2019-10-02 12:54:44

标签: java awaitility

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

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

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

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

  

“直到(java.util.concurrent.Callable)   ConditionFactory无法应用于(布尔值)“

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

2 个答案:

答案 0 :(得分:1)

until需要采用函数,该函数返回一个布尔值(即Callable<Boolean>),而不仅仅是一个布尔值。

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

答案 1 :(得分:1)

您需要付出,直到可收回。即

await().until(() -> result.contains("banana"));
相关问题