セットアップオプション
MockMvc は 2 つの方法のいずれかで設定できます。
WebApplicationContext
Spring MVC とコントローラーインフラストラクチャを含む Spring 構成を指します。
- スタンドアロン
テストするコントローラーを直接ポイントし、Spring MVC インフラストラクチャをプログラムで構成します。
どのセットアップオプションを使用する必要がありますか?
WebApplicationContext
ベースのテストでは、実際の Spring MVC 構成が読み込まれるため、より完全な統合テストが実現します。TestContext フレームワークは読み込まれた Spring 構成をキャッシュするため、同じ構成を使用してテストスイートにさらに多くのテストを導入しても、テストを高速に実行し続けることができます。さらに、@MockitoBean
または @TestBean
を使用してコントローラーで使用されるサービスをオーバーライドし、Web レイヤーのテストに集中し続けることができます。
一方、スタンドアロンテストは、ユニットテストに少し近いものです。一度に 1 つのコントローラーをテストします。モック依存関係を使用してコントローラーを手動で挿入でき、Spring 構成をロードする必要はありません。このようなテストはスタイルに重点を置いており、どのコントローラーがテストされているか、特定の Spring MVC 構成が動作するために必要かどうかなどを簡単に確認できます。スタンドアロンセットアップは、特定の動作を検証したり、課題をデバッグしたりするためのアドホックテストを作成するのにも非常に便利な方法です。
「統合テストと単体テスト」の議論のほとんどと同様に、正しい答えも間違った答えもありません。ただし、スタンドアロンテストを使用する場合は、Spring MVC 構成を検証するための追加の統合テストが必要になります。または、すべてのテストを WebApplicationContext
を使用して記述し、実際の Spring MVC 構成に対して常にテストを行うようにすることもできます。