Wait for Platform.RunLater in a unit test

前端 未结 3 488
清酒与你
清酒与你 2021-01-13 06:02

I have a presentation class storing an XYChart.Series object and updating it by observing the model. The Series updating is done by using Platform.runLater(...)

I wa

3条回答
  •  北海茫月
    2021-01-13 06:31

    The way I solved it is as follows.

    1) Create a simple semaphore function like this:

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

    2) Call waitForRunLater() whenever you need to wait. Because Platform.runLater() (according to the javadoc) execute runnables in the order they were submitted, you can just write within a test:

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

    which works for simple tests

提交回复
热议问题