2017-12-18 107 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);我已经删除了第二个,我很好。 –