Я продолжаю слышать эту рекомендацию, чтобы всегда получить доступ к компонентам свинг на EDT, включая в тестах. Или аналогичные подходы, включающие фестиваль. < /P>
Например, эти тесты работают нормально, как есть. Если бы я обернул их в лямбдас вышеупомянутыми методами, они выглядели бы менее красиво. < /P>
В какой момент я перестану сойти с рук? FEST доступен. @Test
void givenPlaceholder_ifNoTextSet_andFieldHasNoFocus_placeholderDisplayed_foregroundEqualsPlaceholderColor() {
ValueField field = ValueField.forValueType(SomeClass.class);
String placeholderText = "Please enter some text...";
field.setPlaceholderText(placeholderText);
JFrame frame = frameFor(field);
frame.setVisible(true);
assumeFalse(field.hasFocus());
assertEquals(placeholderText, field.getText());
assertEquals(Colors.placeholder(), field.getForeground());
frame.dispose();
}
@Test
void givenPlaceholder_ifFieldGainsFocus_placeholderRemoved_foregroundBlack() {
ValueField field = ValueField.forValueType(SomeClass.class);
String placeholderText = "Please enter some text...";
field.setPlaceholderText(placeholderText);
JFrame frame = frameFor(field);
frame.setVisible(true);
assumeFalse(field.hasFocus());
assumeTrue(placeholderText.equals(field.getText()));
field.requestFocus();
// returns shared BasicRobot.robotWithCurrentAwtHierarchy()
Robots.getRobot().waitForIdle();
assertEquals("", field.getText());
assertEquals(Color.BLACK, field.getForeground());
frame.dispose();
}
static JFrame frameFor(Container contentPane) {
JFrame frame = new JFrame();
frame.setContentPane(contentPane);
return frame;
}
static class SomeClass {
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... wing-tests