5

組み立てられたアプリケーションで Selenium や HttpUnit などを使用する代わりに、IceFaces アプリケーションのコンポーネントを分離してテストできるようにすることはできますか?

バッキング Bean は簡単に分離できますが (テスト可能に記述されている場合)、アプリケーションの残りの部分をできるだけ使用せずに、アプリケーションのテンプレート/表示部分をテストすることに関心があります。これはできますか?どのように?

従来の単体テストで実行できる「ダミー データ」を使用して、IceFaces オブジェクトをテキストとしてレンダリングする方法はありますか?

これらすべてを実行する方法は考えられますが、複数のアプリケーション (テストしたいコンポーネントごとに 1 つ) を作成する必要があります。ただし、これは次善の方法のようです。

4

2 に答える 2

1

私があなたの質問を正しく理解していれば、ページ用に特別なダミーのバッキング Bean を作成し、それらの Bean を .jspx ファイルにマッピングするテスト JSF 構成ファイルを作成するだけの簡単な問題であるはずです。もちろん、ダミー Bean はビジネス ロジックやバックエンド サービスには一切関与しません。ダミー Bean は、テストで簡単に検証できる単純なデータ セットになります。

ダミーのバッキング Bean とテスト構成ファイルを置き換える Ant スクリプトを作成します。テストを実行します。HTTPUnit のように重いものを必要とせず、アプリで Spring を使用している場合は、このブログ投稿を参照して、Web サーバーなしで完全な Web コンテキストをモックアップする優れた方法を確認してください。テストでは、結果を検証するために生の HTML 出力をスニッフィングする必要がある可能性があります。IceFaces は DIV ID やその他の関連する DOM ツリーの部分を探し出すのが好きなので、これは注意が必要です。(これだけでも、JSF 出力を単体テストしようとする JSF 開発者がほとんどいない理由かもしれません。)

テストが検証されたら、通常の Bean と構成ファイルをアプリに戻します。

出来上がり!JSF コンポーネントの単体テストが完了しました。

Bean と構成ファイルを交換するビジネス全体が面倒です。IceFaces が Spring を使用してバッキング Bean を JSF ページに一致させれば、はるかに簡単になります。その場合、関連するテスト クラスを使用して、application.xml でテスト Bean を定義するだけで済みます。しかし、それは人生です。

頑張ってください。うまくいく方法を教えてください。

于 2009-12-03T18:01:02.683 に答える
1

これはまさにあなたが求めているものではありませんが、JSFUnit (JUnit、Cactus、HtmlUnit、および HttpUnit を使用) は、JSF ランドでのテストの有力な候補のようです。このオプションを検討しましたか?JSFUnit WikiとそのGetting Started Guideをご覧ください。

FAQ は IceFaces に関するいくつかの問題を報告していますが、かなり古い (2009 年初頭) ものであり、その後状況が変わっている可能性があることに注意してください ( JBoss リポジトリにはjboss-jsfunit-examples-icefacesicefaces-demo-addressなどのデモ プロジェクトがあります)。そのため、JSFUnit または IceFaces メーリング リストで正確なステータスを尋ねる価値があるかもしれません)。

編集:コメントで述べたように、OPは「高レベル」ではないものを探しています。Shale Test Frameworkを見てください:

Shale Test Framework は、モック オブジェクト ライブラリと、独自の JUnit を作成するための基本クラスを提供しますTestCase

org.apache.shale.test.mockモック オブジェクトは、次のコンテナー API のパッケージで提供され ます。

  • JavaServer Faces
  • サーブレット

免責事項: Apache Shale は 2009 年 5 月にAtticに移動しました (つまり、サポートが終了しました) が、JSF 用の「成熟した」モック フレームワークを他に知らないので、とにかく言及します (コードはまだそこにあります)。 . 私は他のソリューションに非常に高い関心を持ってこのスレッドをたどります:)

于 2009-11-30T00:13:26.407 に答える