2010-11-28 24 views
5

私はTDDの実際の内容を理解する前にテスト駆動型コードを書いています。その実装を持たない関数やクラスを呼び出すと、私のアプリケーションをより迅速かつ効率的に理解して構築するのに役立ちます。だから、私はコードを書くプロセスを非常によく利用しています - >コンパイルすること>失敗することを見て - その実装をビルドすることで修正します。JSPのテスト駆動開発特に

このプロセスは、Webにとっては少し難しくなります。特にJSP。私がJavaクラスをコンパイルすると、それは問題ありません。コンパイルエラーが表示されます。しかし、JSPでエラーが発生すると、ブラウザを開いて特定のJSPを呼び出す必要があります。

このプロセスを回避し、実際にブラウザをロードせずにJSPコンパイルエラーを表示する方法はありますか?

答えて

2

通常、私はJSPを直接テストしません。 JSPにできるだけ少ないロジックを保つことは、一般的には良い考えです。JSPに数多くの<c:out>タグしか含まれていない場合、テストするのはあまりにも多くありません。しかし、あなたがそれらの中にかなりの量のロジックを持っていれば、私がやることはロジックをカスタムタグに抽出することで、ドライブをかなり簡単にテストすることができます。

+0

あなたは正しいと思います... jspにはロジックが含まれてはいけません –

3

JSPをあらかじめコンパイルすることができます。それをするアリの仕事さえあります。リンクを参照してください:http://ant.apache.org/manual/Tasks/jspc.html

しかし、私はこれが第一歩であると思います。これにより、コンパイルエラーを表示することができます。私は、より多くのユニットテストが必要だと思っています。私はジャカルタサボテン(またはその他)のようなツールがあなたを助けるかもしれないと信じています。

最近、私は膨大な数のJavaテストツールを列挙している次のようなものを見つけました:resource

+0

+1 JspCは単なるAntタスクではなく、ビルド環境の一部として使用できるTomcatの組み込みJSP->サーブレットコンパイラ用のシェルです。 @ルーカ:JEEサーバーとしてTomcatを使用していなくても、あなたのプロセスに便利なツールになる可能性があります。http://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/jasper /JspC.html –

+0

"2011/08/05 - ジャカルタサボテンは退職しました。" – Raedwald

1

コンパイルは簡単な部分ですが、私はAlexRの答えがうまく処理できると思います。

JSPをテストしてテストするのは難しいです。テストするには実際にWebコンテナにデプロイするか、シミュレートする(模擬する)必要があり、ブラウザやブラウザを模倣する必要があります。

Cactusは、容器内テストに役立ちます。 Seleniumでもよい。

また、環境を模擬することもできます。 Springを使用している場合は、そのようなサポートがあります。

しかし、JSPのテストとテスト駆動の難しさに対処する最良の方法は、JSPの使用をやめたり、スクリプトレットを避けてJSPコードのロジックを最小限に抑えることです。

JSPは変装してちょうどサーブレットですので、それはJSPせずにWebアプリケーションを作成することは常に可能だし、とても簡単JSPせずにJava Webアプリケーションの開発を行うためにVelocityようWicketTapestryのようなフレームワークやテンプレートエンジンを使用してのオプションがあります。

関連する問題