FEST-Swing1.2a3の新機能で気付いたこと
今まで1.1を使用しており、今回初めて1.2a3を利用してみているのだが、コンポーネントのtextでコンポーネントを探すことができるようになっているようだ。
従来より、FEST-Swingはコンポーネントをnameにより識別する方針を採っている。
例えば”適用”ボタンがあったとすると、このボタンのnameは”適用”ではなく、別途設定する必要がある。ちなみに、このときの”適用”は何かというとtextプロパティである。
確かに国際化を考えると、”適用”でコンポーネントを識別することには問題がある(例えば英語化したときは”Apply”ボタンになるだろう)が、過去作成したプログラムのテストを自動化したいという理由だけではソースコードの修正が行えない場合もあり、また、そもそも全部のコンポーネントに今からnameを設定するのはコストが高い場合も多い(命名規則を作って、仕様書に1列追加して、...云々)。
1.1では、このような場合どうしたかというと、国際化する際のことは取り敢えず忘れて、こちらのエントリ後半に記載しているようにGenericTypeMatcherを使用して、textプロパティで識別を行っていた。
1.2a3では、この方法がライブラリで提供されるようになったようだ。JButtonMatcher.withText(String)を使用し、以下のような記述ができる。
// import static org.fest.swing.core.matcher.JButtonMatcher.withText;
window.button(withText("適用")).click();
レガシーコードに対しても、直感的なコーディングができるようになったのではないだろうか。
以下、余談で国際化について。
メニューから呼び出される昨日のテストを行う際、どのメニューアイテムを選択するか特定する必要があるが、この特定方法はmenuItemWithPathメソッドの引数に、メニューアイテム名を指定する必要があり、いずれにせよ国際化済みプログラムのテストが実現できなかったと当時は考えたのだが、本来はどうあるべきなのだろうか。
参考
« NetBeansでFEST-Swingを利用する その2 JavaDoc作成 | トップページ | Windows Live Writerでココログに投稿してもトラックバックが反映されない »
この記事へのコメントは終了しました。
« NetBeansでFEST-Swingを利用する その2 JavaDoc作成 | トップページ | Windows Live Writerでココログに投稿してもトラックバックが反映されない »
コメント