为了使用TestFX测试应用程序,我需要获得正在运行的应用程序的实际主要阶段。这意味着我没有代码,我可以通过jar运行应用程序。
这有什么可能的解决方案吗? Scenic View已经这样做,但我无法重现这个功能,特别是因为它似乎使用了弃用的功能
Windows.impl_getWindows
在我的情况下不起作用。
答案 0 :(得分:1)
试试这个:
import com.sun.javafx.robot.impl.FXRobotHelper;
static Collection<Stage> getAllJavaFXStages() {
try {
return FXRobotHelper.getStages();
} catch ( NullPointerException npe ) {
// nasty NPE if no stages exist
return Collections.emptyList();
}
}
```
基于我自己的测试框架代码:Automaton。
修改强>:
如果你想从一个不同的JVM实例获得一个舞台而不是你运行你的代码,那么就没有简单的方法了。
你是对的,ScenicView做到了,但它使用tools.jar
来做。这不是您在运行时获得的标准jar,因此您必须手动添加它(将其置于jre/lib/ext
应该执行此操作,通常只能在lib
中找到它。)
我跟踪了ScenicView似乎在BitBucket repo.
中执行此操作的代码例如,检查函数getRunningJavaFXApplications
。
在测试中使用它获得乐趣!