gpt4 book ai didi

java中的等待

转载 作者:行者123 更新时间:2023-12-05 03:05:03 24 4
gpt4 key购买 nike

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

我有一个电话如下:

System.out.println(...)
await().atMost(10,Duration.SECONDS).until(myFunction());
and some code here....

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

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

最佳答案

等待的默认轮询间隔为 100 毫秒(即 0.1 秒)。这是documented under Polling在维基中。

如果要将轮询间隔设置为秒,则将其添加到 await 中:

with().pollInterval(Duration.ONE_SECOND).await().atMost(Duration.TEN_SECONDS).until(myFunction());

这应该每秒完成一次轮询,最多 10 秒。

这是一个非常简单的例子:

import static org.awaitility.Awaitility.*;
import org.awaitility.Duration;
import java.util.concurrent.Callable;

public class Test {

private Callable<Boolean> waitmeme(int timeout) {
return new Callable<Boolean>() {
int counter = 0;
int limit = timeout;
public Boolean call() throws Exception {
System.out.println("Hello");
counter++;
return (counter == limit);
}
};
}

public void runit(int timeout) {
try {
with().pollInterval(Duration.ONE_SECOND)
.await()
.atMost(Duration.TEN_SECONDS)
.until(waitmeme(timeout));
} catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String args[]) throws Exception {
int timeout = 11;
if (args.length >= 1)
timeout = Integer.parseInt(args[0]);
new Test().runit(timeout);
}
}

关于java中的等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51418237/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com