2009-05-06 12 views
3

JSPの単体テストを行う小さなフレームワークを構築中です。これらのJSPにはカスタムタグがあります。それ以外のタグは特別なものではありません。組み込みモードでのJSPのユニットテスト

多くのJavaユニットテストソリューションがありますが、別個の完全なJSPコンテナが起動され、アプリケーションがデプロイされ、結果がTCP接続を介して収集される方法を使用しないことをお勧めします。このケースの典型的な例は、Apache Cactus、Seleniumなどです。理想的には、できるだけ軽量な組み込みソリューションを用意することです(ネットワーク接続が必要でないことは良い兆候です)。また、さまざまな模擬フレームワークを見てきましたが、単体テスト中にJSPがコンパイル/実行されたときに、1つのクリーンな動作例が見つかりませんでした。

私は見つけることができた最も近いソリューションは、組み込みモードでのJettyを使用していた、またはhttp://docs.codehaus.org/display/JETTY/ServletTester

に記載されているように特にそれは、残念ながら、上記の方法は唯一、サーブレットのために働くが、JSPの言及を持っていない、ServletTesterクラスです。プログラム的にJasperサーブレットをフックする方法があると思いますが、2つの統合を取得するためにJetty/Jasperの内部にダイビングを1週間費やす余裕はありません。自由で柔軟な設定が可能であれば、他のJSP/Servletコンテナを使用しても構いません。

誰のは、同様の設定や経験を共有して喜んだ場合、私は幸いです。 http://httpunit.sourceforge.net/ -

答えて

1

はHttpUnitは見てみましょう。 ServletUnitにバンドルされています。ServletUnitは、JSPを処理するメモリ内のサーブレットエンジンです。これは通常、適切にファクタリングされたMVCアプリケーションのView部分をテストするか、いくつかのIntegration/Acceptanceテストを行うためにのみ使用されます。

ビジネスロジックはPOJOのから直接テストする必要があります。ここで

+0

回答ありがとうございます。私は明らかに私の研究中にHttpUnit/ServletUnitを見てきましたが、JSPをどのように実行しているかに関する明確な文書は見つかりませんでした。 彼らのFAQから引用してください: "あなたはあなたのクラスパスにジャスパージャーとそれが依存するものを必要とします"。 つまり、これはJettyが提供するServletTesterの例よりも優れていません。私が間違っているなら教えてください。 – mindas

関連する問題