Пример 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 вместо этого (который будет видеть любой конкретный кадр или диалог, независимо от того, когда вызывается этот метод.)

Другие вопросы по тегам