标签: 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.
}
Run Code Online (Sandbox Code Playgroud)

使用 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));
Run Code Online (Sandbox Code Playgroud)

似乎在默认轮询间隔之后就触发了超时。

在这种情况下,我不应该在第一次使用 Awaitillity 吗?

java multithreading thread-sleep awaitility

18
推荐指数
2
解决办法
2万
查看次数

使用 Awaitility 来确定某些事情没有发生

有没有办法使用 Awaitility 来断言没有任何改变?我想验证某个主题是否未被写入,但由于没有状态更改,Awaitility 不喜欢这样。例如,这段代码给出了以下错误。谢谢

    @Test
    fun waitUntilListMightBePopulated() {

        val myTopic: List<String> = emptyList()

        await.atLeast(2, TimeUnit.SECONDS).pollDelay(Duration.ONE_SECOND).until {
            myTopic.isEmpty()
        }
    }
Run Code Online (Sandbox Code Playgroud)
ConditionTimeoutException: Condition was evaluated in 1005478005 NANOSECONDS which is earlier than expected minimum timeout 2 SECONDS
Run Code Online (Sandbox Code Playgroud)

java kotlin awaitility

14
推荐指数
2
解决办法
9180
查看次数

Java - Thread.sleep VS Awaitility.await()

我想替换Thread.sleepAwaitility.await(),最好进行最小的更改,因为我正在检查旧存储库中的声纳错误。我试图避免使用untilAwaitility,但它没有成功。我知道 Awaitility 是针对异步行为的,而until函数是其中的重要组成部分。我希望对 Awaitility 有更多经验的人可以建议在这个测试场景中干净地使用它,非常感谢您的意见。

//Thread.sleep(1000);
Awaitility.await().atMost(Duration.ONE_SECOND);
list = client.getLocation();
Assertions.assertFalse(list.isEmpty());
Run Code Online (Sandbox Code Playgroud)

java awaitility

8
推荐指数
2
解决办法
1万
查看次数

处理等待 lambda 失败条件下的内部异常

我有一些使用 Awaitility 库(https://mvnrepository.com/artifact/org.awaitility/awaitility/4.0.2)的功能测试,我需要的是用它运行一些代码,并在以下情况下执行一些操作条件失败,直到成功,或者时间超过 Awaitility 条件的限制。

到目前为止我有这个:

Awaitility.await().atMost(10, SECONDS).until(() -> {
    try {
        some code...
        some assertions...

        return true;
    } catch (Throwable throwable) {
        throwable.printStackTrace();
        some more code...
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

如果超过 10 秒限制,此条件失败,我得到的结果是:

org.awaitility.core.ConditionTimeoutException: Condition with lambda expression in myproject.class was not fulfilled within 10 seconds.
Run Code Online (Sandbox Code Playgroud)

那么我怎样才能显示导致 Awaitility 条件未成功的真实代码异常,同时还具有在代码失败时运行某些代码的功能呢?

先感谢您。

java exception awaitility

5
推荐指数
0
解决办法
5940
查看次数

如何在等待回调中保存对象?

我的代码调用服务器并获取old-response.

然后我想轮询直到我从服务器(又名new-response)得到不同的响应。

II 使用 while 循环我可以保存new-response并在轮询后使用它。

如果我使用我awaitility怎样才能new-response轻松获得?

这是我的代码:

public Version waitForNewConfig() throws Exception {
    Version oldVersion = deploymentClient.getCurrentConfigVersion(appName);
    await().atMost(1, MINUTES).pollInterval(5, SECONDS).until(newVersionIsReady(oldVersion));
    Version newVersion = deploymentClient.getCurrentConfigVersion(appName);

}

private Callable<Boolean> newVersionIsReady(Version oldVersion) {
    return new Callable<Boolean>() {
        public Boolean call() throws Exception {
            Version newVersion = deploymentClient.getCurrentConfigVersion(appName);

            return !oldVersion.equals(newVersion);
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

java multithreading polling awaitility

3
推荐指数
2
解决办法
3885
查看次数

java中的等待性

我正在尝试使用 java 中的 Awaitility 包为我的集成测试编写一个场景。

我有一个电话如下:

System.out.println(...)
await().atMost(10,Duration.SECONDS).until(myFunction());
and some code here....
Run Code Online (Sandbox Code Playgroud)

在这里,它等待 10 秒,直到 myFunction() 被调用。

我想要这样的东西,我的要求是:它应该每秒持续调用 myFunction() ,持续时间为 10 秒。对此有更好的方法吗?

awaitility

3
推荐指数
1
解决办法
2万
查看次数