このセクションの内容
はじめに
単体テスト アシスタントを使用すると、次のような Spring コンポーネントに対して JUnit テストを作成および実行できます: @Controller、@RestController、@Component、@Repository および @Service 。UTA はコードを解析し、サンプル アサーションと初期値を含む実行可能なテスト テンプレートを生成し、設定します。Spring コンポーネントのテストを追加する場合、以下の選択肢があります。
- 標準の JUnit テスト
- Spring テスト フレームワークを利用し、Spring アプリケーションのコンテキスト (詳細は「Spring MVC Test Framework」を参照) で実行される Spring 統合テスト
Spring 統合テストを作成する場合、ビルド システムで spring-test
への依存関係が設定されていることを確認します。「必要なライブラリを含めるためのビルド システムの設定」を参照してください。
Spring 統合テストのサポート
UTA は autowired フィールド、セッターメソッド、コンストラクター引き数による Spring の依存性注入をサポートします。UTA は Spring に必要な依存性の bean を提供するインナー構成クラスを作成します。モックが有効な場合 (「設定の構成」を参照)、すべての依存関係がモック化された bean として追加されます。
Spring MVC コントローラーのハンドラー メソッドのテスト
@Controller および @RestController のハンドラー メソッドのテストは、MockMvc を使用して構成されます。 UTA はリクエスト ボディ、レスポンス ボディ、レスポンス MIME タイプ、HTTP メソッド、パス パラメーター、クエリー パラメーター、HTTP ヘッダー、セッション属性の設定を認識し、設定することができます。
Spring テストの作成
Spring テストを作成するには、次の操作を行います。
- Eclipse の [Parasoft] メニューで [ビューの表示] > [単体テスト アシスタント] をクリックし、単体テスト アシスタント ビューを開きます。
- エディターで Spring コンポーネントを選択します。UTA はコードを解析し、選択対象に対して利用可能なオプションを表示します。表示される可能性があるオプションは以下のとおりです。
- 通常 選択されたメソッドに対して標準の JUnit テストを作成します。Spring フレームワークは使用しません。
- 通常の Spring 選択されたメソッドに対して Spring テストを作成します。
- パラメータライズ パラメータライズされたテスト ケースを作成します。Spring フレームワークは使用しません。
- Parameterized Spring パラメータライズされた Spring テスト ケースを作成します。
- Spring テスト ケースの追加 コンポーネントの複数のメソッドに対してテストを作成します。 - 利用可能なオプションから 1 つを選択します。[Spring テスト ケースの追加] を選択した場合、ダイアログが表示されたら、テスト ケースを作成するメソッドを選択し、[OK] をクリックします。詳細は「複数の単体テストの作成」を参照してください。
生成されたテストには、サンプル アサーション テンプレートとデフォルトの UTA 値が含まれています。テストを表示してサンプル アサーションのコメントを解除し、値を変更します。
UTA によって作成された Spring テストには任意パラメーターは含まれていません。たとえば、次のパラメーターは含まれません。
@RequestParam(value = "count", required = false)- UTA を使用してテストを実行し、カバレッジ情報と可能な改善に関する推奨事項を収集します (詳細については「単体テスト アシスタントを使用した単体テストの実行」を参照)。実行フロー ツリー内でハンドラー メソッドの呼び出しを見つけやすくするため、最も内側の Spring 呼び出しは非表示にされています。
private メソッドに対する Spring テストの作成
UTA は private メソッドの通常またはパラメータライズド Spring テストを作成し、コードのカバレッジを上げることができます。
- UTA の設定で [private メソッドのテストを作成] オプションをオンにします (「構成の設定」を参照)。
- エディターで private Spring コンポーネント メソッドを選択します。
- 以下のいずれかのオプションを選択します。
- 通常の private 選択された private メソッドに対して通常のテストを作成します。– Spring フレームワークは使用しません。- 通常の Spring private 選択された private メソッドに対して通常の Spring テストを作成します。
- パラメータライズド private 選択された private メソッドに対してパラメータライズド テストを作成します。– Spring フレームワークは使用しません。
- パラメータライズド Spring private 選択された private メソッドに対してパラメータライズド Spring テストを作成します。
- Spring テスト ケースの追加 コンポーネントの private メソッドを含む複数のメソッドに対してテストを作成します。
デフォルトでは、[private メソッドのテストを作成] オプションはオフです。業界のベスト プラクティスでは、private メソッドを直接テストするのではなく、private メソッドを呼び出すアクセス可能なメソッドのテストを作成することで private メソッドをテストするよう推奨されています。
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 を参照してください。