Пример FEST-swing не работает, frame.isShowing () возвращает false - PullRequest
2 голосов
/ 21 июля 2010

Попробуйте использовать тестирование 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 Ответ

3 голосов
/ 11 февраля 2011

Проблема в том, что вы звоните robotWithNewAwtHierarchy после , когда вы запускаете свое приложение.То, что происходит, - то, что любой кадр или диалог, созданный перед вызовом robotWithNewAwtHierarchy, не будет виден созданным роботом.

Вы можете либо переместить robotWithNewAwtHierarchy до строки, где вы запускаете свое приложение, либо использовать robotWithCurrentAwtHierarchy вместо этого (который будет видеть любой конкретный кадр или диалог, независимо от того, когда вызывается этот метод.)

...