1

Spring を使用してサービスの実装を定義済みのインターフェースに追加する、Spring ベースの Web アプリケーションを作成しています。これまでのところ、とても標準的です。正常に動作します。

ユーザーがセッションの実行時にアプリケーションの動作を上書きできるようにしたいと考えています。そのために、ユーザーセッションに応じて、Spring がインターフェイスの背後にある実装を変更するようにしたいと考えています。

そのユースケースは、INT で実行される自動テストケースであり、システムによって作成された電子メールの出力をテストする必要があります。INT には、メール サーバーにメールを送信するように設定されたメール サービスがあります。テストケースがメールプロトコルを使用してメールをチェックする必要はありません。自動テストケースが実行されている場合に備えて、電子メールの実装を変更して、電子メールを HTML へのコメントとして書き込むようにして、テストで結果を簡単に確認できるようにします。そのため、特別な状況で実装する Bean を変更した方がよい場合がいくつかあります。

そのような機能を実装するのに役立つ春の概念はありますか、それとも自分で作成する必要がありますか?

追加情報: 自動化された受け入れテストがすべてです。そのテストは、手動テスターと共有するシステムで実行されます。=> 手動テスターは、テストのために実際の電子メールを取得したい => 自動テストは、電子メールを受信せず、依存関係の少ない電子メールの内容をチェックするだけで複雑さを軽減します。2 つのシステムがあり、1 つは人間のニーズに合わせて構成され、もう 1 つは自動テストのニーズに合わせて構成されていても、問題はありませんでした。しかし、そうではないので、実行時にシステムの動作を変更する方法が必要です。

4

1 に答える 1

0

これは通常、次の方法で行われます。

  1. テスト用のスプリング コンテキストを作成し、テスト クラスに Bean を注入できる spring-test モジュールを使用してテストをセットアップします。
  2. デフォルトのメールサービス実装がモックに置き換えられる別のSpringプロファイルを作成することを除いて、本番環境で行うのと同じコンテキストファイルをテストに使用します。
  3. ユーザーがプログラムで実行したステップをシミュレートし、最後に のようなものをアサートするテスト ケースを作成しますassertEquals("<expected_email_text>", mailServiceMock.getLastEmail())

あなたの質問からは、上記の標準的なアプローチから逸脱する理由が明確ではありません。理由を説明していただければ、適切な答えを導き出しやすいかもしれません。

于 2013-03-13T09:11:05.427 に答える