BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース JSFテストツール

JSFテストツール

ユニットテストのJSFベースのWebアプリケーションは、コンテナ外のテストJSFコンポーネントの制限があるため困難であると考えられてきた。ほとんどのWeb層のテストフレームワークはデベロッパ達が表示されたHTML出力が予想した通りのものである事を検証するため、Webコンポーネントを使用してテストクラスを記述するブラックボックステストアプローチに従っている。HtmlUnit(source)HttpUni(source)、Canoo WebTest(source)とSelenium(source)のようなフレームワークはここにカテゴライズされる。これらのフレームワークに付随してくる制限事項はクライアント側のWebアプリケーションのみをテストするということである。

しかしこのトレンドは最近発表されたJSFUnit(source)やShale Test(source)、またWebアプリケーションのクライアントとサーバコンポーネント両方をテストするホワイトボックステストをサポートするJSF Extension(source)によって変えられつつある。またEclipse Web Tools Platform(WTP)とJXInsight(source)も開発中で、またJSFアプリケーションをテストする。

他のユニットテストフレームワークのように典型的なJSFテストフレームワークは下記の機能を提供するべきである。

  • コンテナ外で、またEclipse(source)かもしくはNetBeans(source)の様なIDE内からテスト駆動のデベロップメント(TDD)を促進するために、テストケースを隔離して動作させる機能
  • フルHTTPリクエストレスポンスライフサイクルをテストする機能
  • 自動化されたビルドと継続統合環境においてユニットテストを動作させるためにAnt(source)やMaven(source)のようなビルドツールを用いた統合

テストフレームワークはまた、下記のようなJFSの仕様をサポートするべきである。

  • テストメソッドにおいてHTMLかもしくはDOMオブジェクトのチェックの代わりにJSF APIコールを使用すること
  • フォーム上でユーザーインプットを検証する事によってナビゲーションテストを行い適切なページビューにアクセスする
  • 予想されたとおりにアクションが行われるかどうか、またエラーコンディションが予想通りのエラーメッセージを生成するかどうかを実証する
  • ”表示された”属性が誤りであるとされた場合(コンポーネントがウェブブラウザ上には表示されていないがサーバー側においてステートがある場合)におけるJSFコンポーネントの検証
  • XML設定ファイル(faces-confg.xml等)が正しくロードされているかどうかを検証する
テストフレームワーク

HttpUnitとApache Cactus(source)上に構築されているJSFUnitは、統合テストとJSFアプリケーションとJSF AJAXコンポーネントのデバッグを可能にする。それは同じテストクラス内のクライアントとサーバサイド両方のJSFアーティファクトをテストするのに使 用することもできる。JSFUnit APIを用いてテストクラスメソッドはフォーム上でデータを提示する事ができ、また管理されているビーンズが正しくアップデートされているかどうかを検証する。

JSFUnitは設定に関連した問題がランタイムで引き起こされる前に特定し、JSF設定ファイルを検証するためのJSFの静的解析(source)が含まれている。またそれはJSFライフサイクルのパフォーマンス解析(source)用のJSFTimer(source)コンポーネントを提供する。これは与えられたWebリクエスト用のJSFライフサイク ルのそれぞれの段階のレスポンスタイムを辿り、レスポンスタイムがSLA制限内であるかを想定するのに使用する事もできる。

JSFUnitにはRichFace(source)とAjax3jsf(source)コンポーネント用のサポートも含まれている。このフレームワークのBeta 1バージョンが先々月リリースされ、2回目のベータバージョンリリースが今月末に行われる予定である。

ApacheプロジェクトのShale Test FrameworkはServeltとJSFコンポーネント用のモックオブジェクト実装を提供する。これらのベーステストクラスはフレームワーク上に成り 立っているJSFアプリケーションコンポーネントと同様にShale(source)フレームワークのテストに使用することができる。Shale TestはViewController(source)インターフェースによって表示されたメソッドを実践する隔離されたユニットテストを書くの使用することができる。これはViewControllerコンポーネント用のランタイム環境を設定する際に付随する複雑性のため実用的なのである。下記はShale Testフレームワーク内のメインクラスである。

  • AbstractJsfTestCase(source):これはWebアプリケーション内でのServletとJSFコンポーネントのためのユニットテスト用のベーステストクラスである
  • AbstractViewControllerTestCase(source)AbstractJsfTestCaseの拡張であるこのクラスはViewController実装クラスを使用している時のコモンシナリオをテストするのに必要となるユティリティメソッドを提供する
  • また他のJSFウェブコンポーネントのモック実装、すなわちMockApplication(source)MockExternalContext(source)MockFacesContext(source)もある
Shale TestはまたJSFコンポーネントが管理されたビーンかもしくはSpringビーンとしてバインドされるのを可能にするSpring Framework(source)との統合も備えている。

Tools JSF ExtensionプロジェクトはJSF 1.2ベースのウェブアプリケーションの機能を拡張した非UIコンポーネントの集合体である。それは自動化テスト用にJUnit(source)、HTMLUnit、 Cactusを使用している。フレームワークのテストタイム(source)モジュールはJSF 1.2コンポーネント用のモックオブジェクトを提供する。デザインタイムモジュールはアプリケーションを構築、再デプロイのサイクルを行う必要なしにアプ リケーションを停止、リスタートさせるためのJSFホットデプロイ機能を備えている。JSF PhaseListener(source)インターフェースに基づいたこの機能は全ての設定ファイルとクラスがリロードされる要因となっている。これによってデベロッパ達はJSFアプリケーションを記述する際にテスト駆動の反復型JSFデベロップメントアプローチが可能になる。

ツール

またJSFアプリケーションのデベロップメントとパフォーマンスモニタリング内で補助となる開発ツールもいくつかある。JInspiredグループのJInspired(source)グループはPhaseListenerイ ンターフェースに基づいたJSFトレースとプロファイル(source)機能を提供する。この追跡フェーズリスナーをJSFアプリケーションに含むことによってデベロッパとWeb管理者達は、追跡スタック、Javaコールスタック、そしてJSFリクエストに関連したランタイムUIComponent階層のような情報を集める ことが可能になる。

またEclipse WTPにおけるJSFツール(source)のサブプロジェクトはVisual JSF Page EditorとFaces Config Editorのような機能を用いてJSFベースのウェブアプリケーションを開発、デプロイするためのツールサポートを提供する。

原文はこちらです:http://www.infoq.com/news/2007/12/jsf-testing-tools

この記事に星をつける

おすすめ度
スタイル

BT