NetBeansでFEST-Swingを利用する その3 JUnitテストケース作成
実際のプログラムを用いてFEST-Swingを利用していく。元となるソースコードは、2008年7月に作成したもの(TrlLogEditor_src.zip)を用いる。
準備
- 上記TrlLogEditor_src.zipをダウンロード、展開し、NetBeansへプロジェクトとして追加する。。
- 前回までに述べたNetBeansの設定を行う。
テストケースクラス作成
今回テスト対象とするクラスはyukihane.gps.gui.MainWindowである。そこで、プロジェクトウィンドウ上の、ソースパッケージ以下にあるMainWindow.javaを右クリックする。コンテクストメニューで ツール > JUnitテストを作成 を選択し、ウィザードを進める。JUnitのバージョンは4.xを選ぶ。
ウィザードを完了させると、テストパッケージ以下にMainWindowTest.javaが作成される。
初期処理、終了処理の追加
まず、Robotインスタンスを生成する。Robotは1テスト内では1つのインスタンスを使いまわす必要があるため、setUpメソッドで生成し、フィールドとして保持する。また、今回は、テストごとにメインウィンドウを起動させるようにする[1]ので、こちらもsetUpに含める。
public class MainWindowTest { private Robot robot; private FrameFixture window; @Before public void setUp() { robot = BasicRobot.robotWithNewAwtHierarchy(); window = new FrameFixture(robot, new MainWindow()); window.show(); } }
終了時にはcleanUpメソッドを呼ぶ必要がある[1, 2]。
@After public void tearDown() { robot.cleanUp(); }
ダミーのテストメソッドを作成し、うまく動くか試してみる。以下のメソッドを追加した後、Ctrl+F6でこのファイルを実行する(以前記載したとおり、JButtonMatcher.withTextをstatic importする)。
@Test public void testOpen() { window.button(withText("開く...")).click(); }
備考:実行時間について
上で作成したテストケースを実行すると、私の環境では2秒強かかる。これに対し、メソッド内の処理を全てコメントアウトした場合では0.1秒程度で、差は2秒ほどとなっている。これが意味するところは、"GUIの自動テストにはかなりの時間がかかる"ということである。今日のGUIアプリはスタンドアローンでは無くサーバとの通信機能を持っていることも多いと思うが、このテストのためにモックオブジェクトを利用しリフレクションを多用するなどしていると、更に実行時間は延びてくる。
また、実行時のマウスカーソルの動きを見れば分かるとおり、FEST-SwingはGUIイベントを擬似生成するのではなく、Robotを用い実際にボタンを押し、ユーザが画面操作を行うのと同じ仕組みでイベントを発生させる。従って、テスト実行中は端末で他の作業が行えない。
これらを踏まえると、規模がそれなりに大きいものに適用する際には、テスト専用の端末を用意しておくか、夜間にAntで自動実行するような仕組みを検討しておくべきだと考える。
参考
« Windows Live Writerでココログに投稿してもトラックバックが反映されない | トップページ | 転居届けを出す »
この記事へのコメントは終了しました。
トラックバック
この記事へのトラックバック一覧です: NetBeansでFEST-Swingを利用する その3 JUnitテストケース作成:
» FEST-Swingを利用する(8) 視覚の威力 [雪羽の発火後忘失]
期間があいた割にネタが用意できていないので、今回は総集編、回想回です… 過去FEST-Swingに関して記述したエントリを以下に示します。 FESTを使用してJava GUI (Swing)のテストを実行してみる FEST-Swingの紹介。FEST-Swingの機能概要を、簡単なサンプルをもとにして実行してみます。 NetBeansでFEST-Swingを利用する その1 インストール 実際にF... [続きを読む]
« Windows Live Writerでココログに投稿してもトラックバックが反映されない | トップページ | 転居届けを出す »
コメント