クライアントサイドのjcoverageに関しては何とか動いたようです。いよいよサーバサイドのカバレッジ計測をやってみようと思います。確認は以下のような環境で行いました。
プロダクト | バージョン | 役割 |
WebSphere | WebSphere 5.0.2テスト環境*1 | WEBコンテナ |
Cactus | 1.7.1 | サーバサイドテスティングフレームワーク |
Junit | 3.8.1 | テスティングフレームワーク |
jcoverage | 1.0.5 | カバレッジツール |
Cactusとはサーバサイドのテスティングフレームワークです。JUnitのクラスを拡張して、WEBコンテナ上でテストを行うためのクラス群を提供します。
具体的には、requestパラメータにいろいろな値をセットしてブラウザのリクエストをシミュレーションすることや、ブラウザへ返却される画面に正しく値がセットされてるかをチェックするクラスなどを提供してくれます。
さて、前回にJUnitとの連携まではやりましたが、今回がいままでと違うところはWEBコンテナ上で稼働する箇所とクライアントで稼働する箇所があるというところです。つまりリクエスト情報を構築してリクエストを放るまではクライアント側のJavaVM,リクエストを受けて処理をしてクライアントに返すまではWEBコンテナ上のJavaVM、という方式になります。クライアント側のカバレッジ計測についてはある意味いままでと変わらないのですが、WEBコンテナで稼働する部分のカバレッジ計測をどうするかというところがポイントになります。いろいろ調べた結果、以下のようなやり方でやればよい(ような気がする)事がわかりました。
難しいのは、デプロイするearにアーカイブされるクラスにどのようにデバッグを埋め込むか、ですね。通常開発環境でのコーディング・テストフェーズでは、自分でアーカイブを作ることはせず、開発環境が勝手にデプロイしてくれることが多いからです*2。これに関してはclassesにデバッグ埋め込み済みのコードを配置するようビルドする、ことで解決できそうです。
さて例でやってみます。
手順は、Eclipseでコンパイル -> AntでInstrument -> WEBコンテナ起動 -> EclipseでCactus起動 -> Antでレポート
となります。ポイントは
って事です。
この記事は
現在のアクセス:17383