私はJavaFXでSpring Bootを使用してテストしています(これについて説明しているsome excellent YouTube videosに基づいています)。このために私が使用して、私は今、このJavaFXアプリケーションをテストしたいSpringブートテストで 'ヘッドレス'プロパティを設定する方法は?
@Override
public void init() throws Exception {
SpringApplicationBuilder builder = new SpringApplicationBuilder(MyJavaFXApplication.class);
builder.headless(false); // Needed for TestFX
context = builder.run(getParameters().getRaw().stream().toArray(String[]::new));
FXMLLoader loader = new FXMLLoader(getClass().getResource("main.fxml"));
loader.setControllerFactory(context::getBean);
rootNode = loader.load();
}
:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE)
public class MyJavaFXApplicationUITest extends TestFXBase {
@MockBean
private MachineService machineService;
@Test
public void test() throws InterruptedException {
WaitForAsyncUtils.waitForFxEvents();
verifyThat("#statusText", (Text text) -> text.getText().equals("Machine stopped"));
clickOn("#startMachineButton");
verifyThat("#startMachineButton", Node::isDisabled);
verifyThat("#statusText", (Text text) -> text.getText().equals("Machine started"));
}
}
これは始まり
はそれがTestFXで動作させるために、私はこのような状況を作成する必要がありますSpringコンテキストを使用して、「通常の」Beanを模擬Beanに置き換えます。
しかし、通常の起動時にこの「ヘッドレス」プロパティがfalseに設定されていないため、今度はjava.awt.HeadlessException
になります。テスト中にこのプロパティを設定する方法は?
EDIT:
が探し近い春のテストフレームワークを開始すると、私はinit
方法で手動で作成する1、そのテスト対象のアプリケーションが嘲笑豆を使用していないことを1、2コンテキストが開始さがあるようです。誰かがinit()
メソッドでテストコンテキストリファレンスを取得する方法を手がかりにしている場合、私は非常に満足しています。
これは可能です[リンク](http://stackoverflow.com/questions/36160353/why-does-swing-think-its-headless-under-spring-boot-but-not-under-spring-or- pl)があなたを助けます。 –