gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:27:01 25 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/22821129/

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