JSF の実用的な単体テスト フレームワークを見つけようとしています。
私は JSFUnit について知っていますが、これは私にとって非常に非現実的です。プロジェクトに約 10 個の JAR を含め、それを実行するためだけに他の多くのフープをジャンプする必要があります。
プラットフォームとクライアントをシミュレートする必要があるため、Web アプリケーションの単体テストが難しいことを認識しています。しかし、より良い方法はありますか?
JSF の実用的な単体テスト フレームワークを見つけようとしています。
私は JSFUnit について知っていますが、これは私にとって非常に非現実的です。プロジェクトに約 10 個の JAR を含め、それを実行するためだけに他の多くのフープをジャンプする必要があります。
プラットフォームとクライアントをシミュレートする必要があるため、Web アプリケーションの単体テストが難しいことを認識しています。しかし、より良い方法はありますか?
Seleniumや他のツールとの統合テストを考えたことはありますか? Selenium を使用すると、ブラウザで直接テストを記録して実行できます。Selenium Remote Controlを使用して、複数のブラウザや複数のプラットフォームでテストを実行することもできます。
単体テストを作成することは良いことですが、プレゼンテーション レイヤー コードの単体テストよりも、いくつかの機能統合テストを作成する方が役立つ場合があります。
私が現在取り組んでいるプロジェクトでは、セレンの使用に手を出しました。私たちは実際にこれらのセレン テストの作成に多くの時間を費やしましたが、UI が大幅に変更され、投資収益率がほとんどないために労力が 2 倍になるだけなので、ほとんど価値がないことがわかりました。
Selenium のもう 1 つの問題は、コードを展開する必要があることです。つまり、maven などの単体テスト フレームワークではうまく機能しません。
私が言いたいのは、管理対象 Bean の本当に優れた単体テストを作成することは非常に価値があるということです。
jsfunitwar Antタスク、またはJSFUnitが提供するMavenプラグインを確認しましたか?どちらも、テストする.warファイルの生成の複雑さを大幅に軽減します。現在のプロジェクトでJSFUnitを使用していますが、ホワイトボックスとブラックボックスのテスト機能の組み合わせが非常に強力であることがわかりました。JSFUnitは内部でHtmlUnitを使用するため、生成されたHTMLを非常に簡単かつ効果的に調べたり、逆に、内部JSFバッキングBeanの状態を確認したりできます。JSFUnitテストを継続的インテグレーションプロセスに組み込むことができ、その結果に非常に満足しています。
セレンは表面的で、jsfunitは内側です。プロジェクトが単純でない場合は、jsfunitを使用することをお勧めします。チームメンバーはjsf管理対象の名前などを変更できるため、jsfunitでそれをキャッチできます。
HttpUnit も代替できます。API が提供されるため、テストを自動化する選択肢があります。
私は Selenium について Paul と協力しており、セットアップと作業の開始が非常に簡単です。私は Firefox で Selenium IDE を使用し、そのレベルでいくつかのカスタマイズを行います。その後、これらを Java JUnit テストなどの他のプラットフォームにエクスポートできます。selenium-server.jar をダウンロードして起動し、既存の Eclipse Maven POM ドライバー プロジェクトに selenium-java-client-driver を追加するのは非常に簡単でした。次に、エクスポートした同じ JUnit テストを Eclipse で起動します。私は主に、基本的な Selenium IDE がサポートしていないループのためだけに Java を使用したかったのです。
プロジェクト用に JSF ユニットも構成しましたが、構成に時間がかかります...さらに重要なことは、テストへの JSFUnit の変更のようなコンテナー内テストでは、WAR を再構築し、コンテナーに再デプロイしてから、Eclipse からまたはを介して実行する必要があることです。ブラウザ。そのため、小さな変更をすばやく試すには時間がかかります。もちろん、JSFUnitを使用すると、JSFSessionなどのすべての内部にアクセスできるため、必要なテストの粒度に依存します。
JSFUnit テストへの変更をターンアラウンドして実行するためのより高速な方法を誰かが知っていれば、私は興味があります。その点では、間違いなく Selenium テストは JUnit テストのように感じられます。