Я тестирую использование Spring Boot с JavaFX (на основе some excellent YouTube videos, которые объясняют это).Как установить свойство «без головы» в тесте Spring Boot?
Чтобы заставить его работать с TestFX, мне нужно, чтобы создать контекст, как это:
@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();
}
теперь я хочу, чтобы проверить это приложение JavaFX, для этого я использую:
@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"));
}
}
Это начинается контекст весны и заменяет «нормальные» бобы мак-бобами, как ожидалось.
Однако, теперь я получаю java.awt.HeadlessException
, потому что это свойство «без головы» не установлено как false, как это сделано во время обычного запуска. Как установить это свойство во время теста?
EDIT:
Приглядевшись, кажется, что есть два контекста начала, один, что весна тестирование каркасные начинается и один я создаю вручную в методе init
, так что тестируемое приложение не используют издевались бобов , Если кто-то будет иметь представление о том, как получить ссылку на тестовый контекст в методе init()
, я был бы очень доволен.
Возможно, это [ссылка] (http://stackoverflow.com/questions/36160353/why-does-swing-think-its-headless-under-spring-boot-but-not-under-spring-or- pl) поможет вам. –