【发布时间】:2019-08-26 23:02:02
【问题描述】:
我有一个类似于
的代码public void myMethod(){
List<CompletableFuture<Void>> futures = new ArrayList<>();
//getQuestion, getAnswer, both returns a CompletableFuture<Void>
futures.add(getQuestion());
futures.add(getAnswer());
// make sure all the futures are executed.
CompletableFuture.allOf(futures.toArray(new CompletableFuture[futures.size()])).join();
}
- 在执行 myMethod()* 之后,我如何测试期货数组的大小是否为 2 的任何指针
【问题讨论】:
-
您可以将返回类型设为 int 并仅返回期货集合的大小?
-
很遗憾,我不能,myMethod() 是接口的一部分,它是无效的。
-
您可能需要在方法内部的其他地方设置一个变量,然后在方法完成后检查该变量,这取决于如何调用它,因为您需要确保该变量不会同时从多个地方更新。
-
@Plancke,您是否建议将期货列表保留为类变量?如果是,我尝试这样做,但我仍然不确定,我该如何测试。另外,我觉得这可能也不是正确的方法..
-
CompletableFuture#allOf#join 确保所有这些都运行并完成。如果任何一个期货失败,那么 allOf 也将失败。因此,您可能希望对各个期货进行错误处理,因为如果两者都失败,主期货可能会错过堆栈跟踪。为什么你需要知道运行了多少个期货?
标签: java testing java-8 mockito completable-future