我有2个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
。有什么想法吗?
谢谢, 安迪
答案 0 :(得分:1)
您的错误消息告诉您问题:
一旦舞台可见,就无法设置样式
如Stage.initStyle()方法中所述,您需要在将舞台设置为可见之前设置样式。您可以通过查看Application
类的源代码来确认这一点。
解决此问题的唯一方法是,如果需要设置“一次性设置”的属性,请为每个测试重新启动JVM。