アプリケーションに時間の許す限り多くの単体テストを設定しようとしていますが、UIレベルのテストの量が不足していることに常に気づきます。そこには多くのオプションがありますが、どこから始めればよいかわかりません。
Swingアプリケーションをテストするための好ましい単体テストツールは何ですか?なぜあなたはそれを好きですか?
私たちの側では、 [〜#〜] fest [〜#〜] を使用してSWINGGUIをテストするために使用します。これは古典的なスイングロボットのアダプターですが、劇的に使いやすくなっています。
TestNGと組み合わせると、GUIを介して「人間の」アクションをシミュレートする簡単な方法であることがわかりました。
ターゲットアプリケーションにカスタムコンポーネントがある場合は、テストを自動化するために Marathon を絶対にお勧めします。
社内でゼロから作成された、いくつかの非常に複雑なカスタムコンポーネントを使用してアプリケーションを自動化するタスクが与えられました。私は2か月間続いたレビュープロセスを経て、商用とFOSSの両方で利用可能な30近くのテストツールのリストから、使用するテストツールを決定しました。
特定のカスタムコンポーネントを正常に自動化できたのは、onlyテストツールでした。ここで、IBMのRational Functional Tester、MicrofocusのTestPartner、QF-Test、Abbot&FESTが失敗しました。
それ以来、アプリケーションの各ビルドが完了すると実行されるように、テストをCruiseControlと正常に統合することができました。
ただし、警告の言葉:
1)JTableを処理する方法では、エッジの周りがかなり粗いです。私は彼らのために独自のプロキシクラスを書くことでこれを回避しました。
2)ドラッグアンドドロップアクションの記録/再生はまだサポートされていません。
Marathon( http://www.marathontesting.com/Home.html)--tests はJythonで記述されているため、オブジェクトの状態に基づいてあらゆる種類の述語を簡単に記述できます。
Cucumber および Swinger を使用して、SwingGUIアプリケーションの機能受け入れテストを平易な英語で書くことができます。 Swingerは、内部でNetbeansの Jemmy ライブラリを使用してアプリを駆動します。
Cucumberを使用すると、次のようなテストを作成できます。
Scenario: Dialog manipulation
Given the frame "SwingSet" is visible
And the frame "SwingSet" is the container
When I click the menu "File/About"
Then I should see the dialog "About Swing!"
Given the dialog "About Swing!" is the container
When I click the button "OK"
Then I should not see the dialog "About Swing!"
これを見てください Swingerビデオデモ 実際の動作を確認してください。
QFTestを強くお勧めします。私はこれを商用製品に使用しましたが、ほとんどゼロのコードで非常にうまく機能します(私のアプリでは、JavaクライアントAPIを使用する必要があります)。swingコンポーネントの識別を適切に処理します。 GUIの更新にはかなり寛容です-(コンポーネントのサイズ変更、再配置、追加によって既存のテストが中断されることはありません)。機能を大幅に更新しましたが、テストは引き続き機能します。
高価ですが、数ヶ月で完済すると思います。
QFTestの前に私は試しました:
1)Automatedqa-優れたツールですが、ウィンドウ中心であり、Swingを理解していません。クイックテストプロに似ています。
2)UISpec4J-週に50時間しっかりとこれに専念した後、脆弱性と難解なJavaコードが生成されました。それを使用するのは非常に困難でした-何百ものデバッグ/更新を試みましたJava 1ダースのGUI操作のシーケンスを実行することは私の脳にとってはうまくいきませんでした。実際にアプリ自体を書くよりもはるかに複雑なので、テストを書くことを避けてしまいました!
一度QF-TESTをいじる機会がありました。商用ですが、多くの機能を提供します。多分あなたはそれを見てください: http://www.qftest.de/en/index.html
答えではなく、洗練されています。
記録と再生は必要なことではありません。チームには、コードを作成する前にテストを作成する機能が必要です。それ以外の場合、コーダーは作業を終了し、テスターがテストを記録するためにスクランブルをかける間待機します(問題を発見すると修正によって中断されます)。
BDD/TDD/ATDDのようなセットアップでは、UI要素名などを指定して、まだ記述されていないコードのテストをスクリプト化できる何らかのツールが本当に必要です。
ウォーターフォール以外のテストで機能するツールはありますか?
Netbeansをテストするために作成されたライブラリであるJemmyが好きです。
パウンダーを試してみてください: http://pounder.sourceforge.net/