gpt4 book ai didi

java - 在单元测试中等待 Platform.RunLater

转载 作者:行者123 更新时间:2023-11-30 12:03:16 26 4
gpt4 key购买 nike

我有一个表示类存储 XYChart.Series 对象并通过观察模型更新它。系列更新是通过使用 Platform.runLater(...)

我想对此进行单元测试,确保正确执行 runLater 中的命令。如何告诉单元测试等待 runLater 命令完成?现在我所做的只是在测试线程上使用 Thread.Sleep(...) 为 FXApplicationThread 提供完成时间,但这听起来很愚蠢。

最佳答案

我的解决方法如下。

1) 像这样创建一个简单的信号量函数:

public static void waitForRunLater() throws InterruptedException {
Semaphore semaphore = new Semaphore(0);
Platform.runLater(() -> semaphore.release());
semaphore.acquire();

}

2) 每当需要等待时调用waitForRunLater()。因为 Platform.runLater()(根据 javadoc)按照提交顺序执行可运行对象,您可以在测试中编写:

...
commandThatSpawnRunnablesInJavaFxThread(...)
waitForRunLater(...)
asserts(...)`

适用于简单测试

关于java - 在单元测试中等待 Platform.RunLater,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57873870/

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