2017-12-18 181 views
1

我有2個testfx測試,每個測試都能成功運行,但在串行運行時失敗。該錯誤信息是:如何在系列中運行testfx測試?

--- Exception in Async Thread --- 
java.util.concurrent.ExecutionException: java.lang.IllegalStateException: Cannot set style once stage has been set visible 
java.util.concurrent.FutureTask.report(FutureTask.java:122) 
... 

我通過創建初始化階段測試:

@Before 
public void setUp() throws Exception { 

    FxToolkit.registerPrimaryStage(); 
    setupStage((stage -> { 

     Undecorator undecorator; 
     .... 

看來,線程不會讓舞臺上的第一次全面的去。我已經從testfx論壇嘗試了幾件事情,在第二次測試開始之前殺死它,包括FxToolkit.hideStage();Platform.exit();

我正在使用org.testfx:testfx-junit:4.0.6-alpha。有什麼想法嗎?

感謝, 安迪

回答

1

你的錯誤信息,告訴您該問題:一旦階段已經取得了明顯的

正如Stage.initStyle()方法需要指出

不能設置樣式在舞臺設置可見之前設置樣式。您可以通過查看Application類的源代碼來確認。

解決此問題的唯一方法是,如果需要設置'一次性設置'的屬性,則爲每個測試重新啓動JVM。

+0

很感謝。我的setupStage塊中有2行是:final scene scene = new Scene(undecorator,1400,680,Color.TRANSPARENT); stage.initStyle(StageStyle.TRANSPARENT);我已經刪除了第二個,我很好。 –