Index: [Article Count Order] [Thread]

Date:  Fri, 16 Feb 2001 20:54:48 +0900
From:  Toru YAMAMOTO <toru_yamamoto@....jp>
Subject:  [XP-jp:01603] Re: GUI and XP
To:  extremeprogramming-jp@....jp
Message-Id:  <20010216205448.B864@....jp>
In-Reply-To:  <m3r90zx8zv.wl@....localdomain>; from ichiyama@....jp on Fri, Feb 16, 2001 at 06:39:00PM +0900
References:  <20010216124323C.ono@....jp> <20010216134914.A864@....jp> <m3r90zx8zv.wl@....localdomain>
X-Mail-Count: 01603

山本です。

ichiyama ryoichi wrote:
> java.awt.RobotはLinuxだとXレベルのイベントを出すので
> 実際にマウスポインタが動きます。
> そのため通常のNetscapeとかXEmacsとかも操作できたりします。
> また、Xレベルなのできちんとキープレス、キーリリースを
> 呼んでやらないと変な動きになったりします。
> たぶんWindowsでも同じようにできるのではないでしょうか。

おお、面白そうなので試してみました。

Windows(NT4)上ですが、確かにマウスポインタが動きます。
面白いです。

ボタンを押すと内部値をカウントアップするだけの
簡単なアプリケーションにして、Robotでボタンを
押した後、カウント値を取得してみました。

  MainFrame frame = new MainFrame();
  Robot robot = new Robot();

  //ポインタの移動
  Point p = frame.getButtonLocationOnScreen();
  robot.mouseMove(p.x + 5, p.y + 5);
  robot.delay(2000);

  //マウスのボタンを押して離す
  robot.mousePress(InputEvent.BUTTON1_MASK);
  robot.delay(2000);
  robot.mouseRelease(InputEvent.BUTTON1_MASK);
  robot.delay(1000);
  
  if (frame.getCount() == 1)
      System.out.println("Test was successed.");
  else
      System.out.println("Test was failed.");

テストするには十分そうです。
しかし、XPらしく頻繁にUnitTestするには少し不便でしょうか。
#テストに時間がかかるし、マウスもキーボードもさわれない。


> ちなみにぼくはすでにあるWidgetを使う場合はイベント発生で処理が
> うまくいくかどうかをチェックするので、順番にonClickを呼んだり、
> Actionをたたくようにしています。
> あとはレイアウトのチェックとして座標の位置関係をチェックするくらいです。

なるほど、これなら簡単ですね。
Listenerをaddするのを忘れることが(良く(^^;)あるので、
そこまでテストしたい場合でも、

> この場合でもMouseListenerとかに直接MouseEventを作って送ると思います。

とすれば、よいと。参考になります。

-- 
山本 透(toru_yamamoto@....jp) -- Dress Down!