2

Swing GUI テストに FEST-Swing を使用し、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

2 つの質問:
1. JFrame の代わりに Frame を使用する必要があります。そうしないと一致しません。タイトルが正しくないため、「Java アプリケーション」
が必要です。 2. frame.isShowing() は常に false を返します。奇妙に思える

ところで:最新のコードは GenericTypeMatcher() rgs/larry のパラメータが必要なようです

4

1 に答える 1

3

問題は、アプリを起動robotWithNewAwtHierarchy した後に呼び出していることです。呼び出さrobotWithNewAwtHierarchyれる前にインスタンス化されたフレームまたはダイアログは、作成されたロボットには表示されません。

robotWithNewAwtHierarchyアプリを開始する行の前に移動するか、robotWithCurrentAwtHierarchy代わりに使用することができます (このメソッドがいつ呼び出されたかに関係なく、インスタンス化されたフレームまたはダイアログが表示されます)。

于 2011-02-11T03:49:07.570 に答える