2

尝试使用 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.我必须使用JFrame的Frame insteaf,否则无法匹配,导致标题不正确,我期望“Java Application”
2. frame.isShowing()总是返回false,它看起来很奇怪

顺便说一句:最新的代码似乎需要 GenericTypeMatcher() rgs/larry 的参数

4

1 回答 1

3

问题是您在启动应用程序robotWithNewAwtHierarchy 后调用。所发生的情况是,在调用之前实例化的任何框架或对话框robotWithNewAwtHierarchy都不会被创建的 Robot 看到。

您可以移动robotWithNewAwtHierarchy到启动应用程序的行之前,也可以robotWithCurrentAwtHierarchy改用(无论何时调用此方法,都会看到任何实例化的框架或对话框。)

于 2011-02-11T03:49:07.570 回答