我目前正在通过DoubleProperty和Timeline在JavaFX中移动Node。当我在窗口中显示它时,一切都按计划进行。但是,我需要运行一些JUnit 5测试。
以下是Gui和Junit类的简化版本。我已经尝试过了
- 使用while循环,检查时间轴的状态
- 在时间轴上设置一个监听器
- 使用Thread.sleep等待
public DoubleProperty x = new SimpleDoubleProperty(0);
public GuiClass(){ //Constructor
KeyValue keyValueX = new KeyValue(x, 10);
Timeline driveTimeline = new Timeline(
new KeyFrame(Duration.millis(0)),
new KeyFrame(Duration.millis(100), keyValueX)
);
driveTimeline.play();
}
的Junit:
class Junit {
@Test
void test() {
GuiClass test = new GuiClass();
//Never finishes
// while(test.driveTimeline.getStatus() != Animation.Status.STOPPED)
// {
// System.out.print(".");
// }
// test.driveTimeline.setOnFinished((pActionEvent) ->
// {
// System.out.println(test.x.get());
// });
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(test.x.get()); // Returns 0.0
}
我的问题是:如何让Junit等到时间轴完成?
附注:在我的原始程序中,时间线在完成时会产生几个函数,然后被置位。但时间表似乎永远不会完成。
谢谢!