2

したがって、これはかなり「大きな」質問ですが、私が達成しようとしていることは次のとおりです。

Tomcat で実行されている Spring アプリケーション、MVC、JDBC (MySQL)、および JSP があります。

私の目的は、適切な方法を使用して「スタック」全体をテストすることです。

私がこれまでに持っているのは、Selenium を使用してアプリケーションと対話する実際のユーザーをシミュレートし (そのためのダミー アカウントが必要です)、ページに要素が存在するかどうか、データベースに特定の要素があるかどうかを確認するなど、さまざまな検証を実行することです。値または値がデータベースと一致する場合。

最初の懸念は、これが実際にデータベースを使用しているため、特定のシナリオをテストするのが難しいことです。データベースをモックできるようにしたいと本当に思っています。特定のアカウント構成、データ状態などをエミュレートする

2 番目の懸念は、データベースにあるものを使用し、データが絶えず変化しているという事実を考えると、動作を予測するのが難しいため、適切にアサートすることです。

Spring Test を見ましたが、サーブレット コンテナーの外部でテストできるため、JSP や Javascript のテストはできません。

DBUtils のドキュメントを見ましたが、この場合に役立つかどうかはわかりません

そこで、私の仲間の開発者に、次のヒントをお願いしたいと思います。

  • 模擬データベース上で Selenium テストを実行する
  • テストごとに異なる構成を許可する
  • Maven/Gradle との互換性を維持する
4

1 に答える 1

0

この種のスタブをサポートするために、順序付けされた自動配線機能から始めました。

基本的には、過去に取り組んでいた Seam フレームワークから引き継いだアイデアですが、春にはまだ似たようなものを見つけることができませんでした。
アイデアは、自動配線された Bean の現在の実装を解決するために使用される優先アノテーション (fw、app、mock、...) を持つことです。これはすでにxmlでは簡単ですが、java configでは簡単ではありません.

したがって、アプリの優先順位を持つ通常のリポジトリ Bean と、モックの優先順位を持つこれらのクラスをスタブ化するテスト パッケージがあります。両方がクラスパスにある場合、Spring は通常、重複した Bean が見つかったという例外で失敗します。私たちの場合、拡張された beanfactory は、優先順位が最も高い Bean を単純に取得します。

spring の順序アノテーションを直接使用できるかどうかはわかりませんが、とにかく「明確に定義された」優先順位スコープを使用することを好みました。

! これはスタブへの優れたアプローチであるため、テスト用の Bean は、データベース定義を置き換えるために使用するのではなく、すでに言及されているいくつかの以前の回答のように、hsql のようなインメモリ データベースを使用します。!

于 2013-02-28T06:21:20.033 に答える