2011-06-21 10 views
1

これはあいまいな質問のように聞こえるかもしれませんが、私はいくつかの特定のポインタを探しています。ユニットレガシーJ2EEアプリケーションのテスト方法

当社のJ2EEアプリがStruts2 + Plain Servlets + JSP + iBatis + Oracle

上に構築されて、私はScalaでユニットテストを書くことを好むだろう、私は同様側の言語を学ぶことができるように

  • 私のことができるようにするために何が必要でしょう特定の手順にしたがってJSPに特定の列が表示されていることを確認してください。
    • リンクをクリックしてください。いくつかのパラメータを選択してサーブレットにページを送信してください
    • 次のページには<table>タグ内に特定の列があることを確認してください。
  • 私はserlvetのモックリクエストを作成するために何が必要でしょうか?

私は、上記のようなテストをコアビジネス機能テストに加えて作成しようとしていますが、問題はユニットテストでレガシーコードをラップしようとしていることと、コードが単体テスト用に設計されていないことです。

+2

あなたの例は単体テストをはるかに超えています。 –

+0

真。最初のステップは本当に単体テストではありませんが、そこではこれをテストするソリューションはありますか? – Omnipresent

答えて

3

私はこのユニットをテストしません。いくつかのユニットの統合をテストしようとしています。また、コンテナ内にある場合にのみ利用できる多くのコンテキスト依存関係があるため、JSPの単体テストを作成するのはむしろ難しい作業です。

代わりに、実行中の(デプロイされた)アプリケーションに対して実行されるいくつかの自動機能テストを書く助言があります。

Seleniumのようなフレームワークは、実際のユーザーの動作をシミュレートし、生​​成されたHTMLコードに対してアサートを行うことができるので、ここで大きな助けになるかもしれません。

EDIT:ここでは別のアプローチをすることがあります

    テストコード
  • Jettyのような埋め込まれたサーブレットコンテナを起動
  • その
  • にすべての平野サーブレットとJSPを配備するOracleデータベースを置き換えますHSQLまたはDerby
  • のようなメモリ内データベースを使用して、DBUnit
  • そして、Selenium(Javaバインディングを使用)またはHttpUnitのいずれかを使用して、生成されたHTMLコードに対して要求とアサートを行います。

しかし、これはユニットテストではなく、統合テストです。

+0

+1セレン。 – Marcelo

0

誰もが言ったように、あなたは本当に単体テストについて話していません。あなたは機能テストについて話しています。私はあなたの本当の目標が何であるかについて懸命に思います。自動テストのためにこのプッシュを推進しているのは何ですか?アプリケーションに構成上の問題(構成が難しく、一部のコンポーネントは機能しないため、他のコンポーネントは機能しません)がありますか。これは、痛みのページとテストケースをターゲットにしたセレンで煙検査スイートを構築することを正当化するかもしれません。これは回帰バグの検出にも役立ちます。

レガシー懸念事項です。アプリケーションはヘルプを超えていません。セレンでフロントエンドテストを実行している場合、解析可能なHTMLのコードがどのように書かれているかは関係ありません。

実際のサーバー側のコードです。あなたはちょうどAndy Dufresneスタイルをロールバックする必要があります。バグを修正し、テスト駆動開発の原則を念頭に置いた機能コードを追加するとき。あなたの変更に関連し、ユニットテストを追加するリワークコード。レガシーアプリがどれほど速く動くのか驚くかもしれません。

関連する問題