我想为 JDA Discord Bot 创建一个(功能)测试系统。为此,我需要等到当前队列中的所有消息都发送完毕(消息使用 发送RestAction#queue)并测试是否有该消息。有没有办法等待所有排队的RestActions或者我应该指数级等待(例如等待0.5秒,等待1秒,等待2秒并测试消息是否存在)[注意] 我不想更改生产代码中的queuetosubmit并将其发送到测试。
1 回答

一只斗牛犬
TA贡献1784条经验 获得超2个赞
理想情况下,测试系统根本不应该与互联网交互。但是,要回答您的问题,您可以使用提交返回的承诺而不是使用队列来等待休息操作。
List<CompletableFuture<?>> list = new ArrayList<>();
list.add(action1.submit());
list.add(action2.submit());
...
CompletableFuture<Void> merged = CompletableFuture.allOf(list.toArray(new CompletableFuture[0]));
merged.whenComplete((v, error) -> {
if (error != null) error.printStackTrace();
else System.out.println("All futures completed successfully");
});
添加回答
举报
0/150
提交
取消