このセクションの内容
はじめに
単体テスト アシスタントを使用すると、Web MVC を使用して HTTP エンドポイントを実装する Spring のコントローラ― メソッドに対して JUnit テストを作成および実行できます。UTA はコードを解析し、サンプル アサーションと初期値を含む実行可能なテスト テンプレートを生成し、設定します。リクエスト ボディ、レスポンス ボディ、レスポンス MIME タイプ、HTTP メソッド、パス パラメーター、クエリー パラメーター、HTTP ヘッダーの設定を認識し、設定することができます。UTA は autowired フィールド、セッターメソッド、コンストラクター引き数による Spring の依存性注入をサポートします。
Spring MVC コントローラーのハンドラー メソッドのテストは、自動的に Spring JUnit テストとして実行されます。テスト対象のハンドラー メソッドは、MockMvc を使用して呼び出され、必要な依存性のために Spring への bean を提供するインナー クラスが構成されます。[モック] オプションがオンの場合 (「設定の構成」を参照)、すべてのコントローラー依存性がモックされた bean としてインナー コンフィギュレーション クラスに追加されます。
Spring テストの作成
Spring テストを作成するには、次の操作を行います。
- Eclipse の [Parasoft] メニューで [ビューの表示] > [単体テスト アシスタント] をクリックし、単体テスト アシスタント インターフェイスを開きます。
- エディターで Spring のコントローラーを選択します。UTA はコードを解析し、選択対象に対して利用可能なオプションを表示します。表示される可能性があるオプションは以下のとおりです。
- 通常の Spring 選択されたメソッドに対してテストを作成します。
- Parameterized Spring パラメータライズされたテスト ケースを作成します。
- Spring テスト ケースの追加 コントローラーの複数のメソッドに対してテストを作成します。 - 利用可能なオプションから 1 つを選択します。[Spring テスト ケースの追加] を選択した場合、ダイアログが表示されたら、テスト ケースを作成するメソッドを選択し、[OK] をクリックします。詳細については「複数の単体テストの作成」を参照してください。
- 生成されたテストには、サンプル アサーション テンプレートとデフォルトの UTA 値が含まれています。テストを表示してサンプル アサーションのコメントを解除し、値を変更します。
- UTA を使用してテストを実行し、カバレッジ情報と可能な改善に関する推奨事項を収集します (詳細については「単体テスト アシスタントを使用した単体テストの実行」を参照)。実行フロー ツリー内でハンドラー メソッドの呼び出しを見つけやすくするため、最も内側の Spring 呼び出しは非表示にされています。
ContextConfiguration アノテーションによる Spring テストの設定
Spring 単体テストは、必要な依存ライブラリを提供するために、テスト実行時にBean を必要とします。デフォルトでは、UTA は必要な Bean メソッドを持つ内部コンフィギュレーション クラスを作成して値を設定することで、テスト ケース内に直接利用可能な Bean を定義します。(注意: Spring Boot プロジェクトでテストを作成する場合は、Spring Boot が自動的に依存関係をスキャンできるため、モックを有効化しないかぎりコンフィギュレーション クラスは作成されません)
あるいは、 @ContextConfiguration アノテーションを使用して XML コンフィギュレーション ファイルまたは別個の Java コンフィギュレーション クラスへの参照をテストに設定することもできます。
- [Parasoft] メニューの [設定] > [単体テスト アシスタント] をクリックします。
[Spring テストの ContextConfiguration 属性] フィールドに以下のいずれかを入力します。
- 1 つまたは複数の XML コンフィギュレーション ファイルへの参照。コンフィギュレーション属性は次のようになります。locations={"classpath:/**/FirstContext.xml", "classpath:/**/SecondContext.xml"}
- 1 つまたは複数の独立した Java コンフィギュレーション クラスへの参照。コンフィギュレーション属性は次のようになります。
classes={FirstConfigClass.class, SecondConfigClass.class}
例
次のように [Spring テストの ContextConfiguration 属性] オプションに 2 つのコンフィギュレーション ファイルへの参照を指定できます。
生成された Spring 単体テストには属性が設定された ContextConfiguration アノテーションが追加されます。
ContextConfiguration アノテーションの詳細については、Spring のドキュメント https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/Configuration.html を参照してください。