Пример FEST-swing не работает, frame.isShowing() возвращает false
Попробуйте использовать тестирование FEST-Swing для Swing GUI и пример из http://easytesting.org/swing/wiki/pmwiki.php?n=FEST-Swing.LaunchFromMain
К сожалению, frame.isShowing() всегда возвращает false, хотя я уже вижу, что JavaApp Swing работает
Смотри мои коды
...
ApplicationLauncher.application(JavaApp.class).start();
GenericTypeMatcher<Frame> matcher = new GenericTypeMatcher<Frame>(Frame.class) {
protected boolean isMatching(Frame frame) {
System.out.println("title:" + frame.getTitle() + " showing:" +frame.isShowing()); // .getTitle());
return "Java Application".equals(frame.getTitle()) && frame.isShowing();
}
};
Robot robot = BasicRobot.robotWithNewAwtHierarchy();
FrameFixture frame2 = WindowFinder.findFrame(matcher).withTimeout(5000).using(robot);
...
из консольного журнала
title: showing: false
Два вопроса:
1. Я должен использовать Frame insteaf из JFrame, иначе он не может быть сопоставлен, потому что заголовок не верный, я ожидаю "Java-приложение"
2. frame.isShowing() всегда возвращает false, это кажется странным
Кстати: последние коды, кажется, нуждается в параметре для GenericTypeMatcher() rgs/larry
1 ответ
Проблема в том, что вы звоните robotWithNewAwtHierarchy
после запуска вашего приложения. Что происходит, так это то, что любой кадр или диалог создаются перед вызовом robotWithNewAwtHierarchy
не будет виден созданным роботом.
Вы можете двигаться robotWithNewAwtHierarchy
до линии, где вы запускаете свое приложение, или вы можете использовать robotWithCurrentAwtHierarchy
вместо этого (который будет видеть любой конкретный кадр или диалог, независимо от того, когда вызывается этот метод.)