torutkのブログ

ソフトウェア・エンジニアのブログ

FEST-SwingでSwingクラスの自動ユニットテスト(続)

id:torutk:20110131(最初の一歩編)の続きです。
次の一歩を踏み出すときの大小さまざまなつまづきを書いていきます。

Swing部品にsetNameするのが手間

ここで注意点、SwingのGUIコンポーネントでFrameFixtureから制御・状態取得したいものには、setNameメソッドで名前を指定しておく必要があります。

なのですが、ちょっと面倒で、気分がFESTでなくなります。

NetBeansGUIビルダーには、SwingのGUIコンポーネントのnameプロパティを自動で設定する機能がありますが、デフォルトでは有効ではないので、以下の手順で設定します。

[ツール]メニュー→[オプション]で「オプションダイアログ」を開き、[その他]メニュー→[GUIビルダー]タブを選択します。
[コンポーネント名の設定]欄で、[デフォルト]となっているのを[オン]に変更し、[了解]ボタンを押します。

すると、GUIビルダーで配置したSwingコンポーネントのnameプロパティには変数名が自動で設定されるようになります。変数名をGUIビルダ上で変更すればnameプロパティも自動で追従します。

JDialogのサブクラスを作ったらFrameFixtureに入らない

DialogFixtureを使います。
他にもFEST SwingのJavadocを見ると、JPopupMenuFixtureのようにSwingのクラスに対応したFixutureクラスが多数存在しているのが分かります。

とりあえずJDialogサブクラスのテストの場合

public class SettingDialogTest {
    private DialogFixture window;

    @Before
    public void setUp() {
        MyDialog dialog = GuiActionRunner.execute(new GuiQuery<MyDialog>() {
            @Override
            protected MyDialog executeInEDT() {
                return new MyDialog(null, true);
            }
        });
        window = new DialogFixture(dialog);
        window.show();
    }
    :
}

ラジオボタンチェックボックスの操作は?

FEST Swingのフィクスチャで、ラジオボタンチェックボックスの操作は以下のような感じ。

     window.radioButton("beerRadioButton").click();
     window.checkBox("wiskeyCheckBox").click();