このセクションの内容

はじめに

単体テスト アシスタントを使用すると、次のような 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 Boot

Spring Boot プロジェクトでテストを作成する場合、内部コンフィギュレーション クラスは追加されません。

Spring テストの作成

Spring テストを作成するには、次の操作を行います。

  1. [Parasoft] メニューの [設定] > [単体テスト アシスタント] をクリックします。
  2. [Spring フレームワーク テスト] > [作成アクションの有効化] オプションをオンにします。
  3. エディターで Spring コンポーネントを選択します。UTA はコードを解析し、単体テスト アシスタント ビューに 1 つまたはそれ以上のオプションを表示します。表示される可能性があるオプションは以下のとおりです。
    - 通常 選択されたメソッドに対して標準の JUnit テストを作成します。Spring フレームワークは使用しません。
    - 通常の Spring 選択されたメソッドに対して Spring テストを作成します。
    - パラメータライズ パラメータライズされたテスト ケースを作成します。Spring フレームワークは使用しません。
    - Parameterized Spring パラメータライズされた Spring テスト ケースを作成します。
  4. 利用可能なオプションから 1 つを選択します。
  5. 生成されたテストには、サンプル アサーション テンプレートとデフォルトの UTA 値が含まれています。テストを表示してサンプル アサーションのコメントを解除し、値を変更します。

    UTA によって作成された Spring テストには任意パラメーターは含まれていません。たとえば、次のパラメーターは含まれません。
    @RequestParam(value = "count", required = false)

  6. UTA を使用してテストを実行し、カバレッジ情報と可能な改善に関する推奨事項を収集します (詳細については「単体テスト アシスタントを使用した単体テストの実行」を参照)。実行フロー ツリー内でハンドラー メソッドの呼び出しを見つけやすくするため、最も内側の Spring 呼び出しは非表示にされています。

private メソッドに対する Spring テストの作成

UTA は private メソッドの通常またはパラメータライズド Spring テストを作成し、コードのカバレッジを上げることができます。

  1. [Parasoft] メニューの [設定] > [単体テスト アシスタント] をクリックします。
  2. [Spring フレームワーク テスト] > [作成アクションの有効化] オプションをオンにします。
  3. [テスト作成オプション] > [private メソッドのテストを作成] オプションをオンにします。
  4. エディターで private Spring コンポーネント メソッドを選択します。
  5. 以下のいずれかのオプションを選択します。
    - 通常の private 選択された private メソッドに対して通常のテストを作成します。– Spring フレームワークは使用しません。- 通常の Spring private 選択された private メソッドに対して通常の Spring テストを作成します。
    - パラメータライズド private 選択された private メソッドに対してパラメータライズド テストを作成します。– Spring フレームワークは使用しません。
    パラメータライズド Spring private 選択された private メソッドに対してパラメータライズド Spring テストを作成します。

デフォルトでは、[private メソッドのテストを作成] オプションはオフです。業界のベスト プラクティスでは、private メソッドを直接テストするのではなく、private メソッドを呼び出すアクセス可能なメソッドのテストを作成することで private メソッドをテストするよう推奨されています。

ContextConfiguration アノテーションによる Spring テストの設定

Spring 単体テストは、必要な依存ライブラリを提供するために、テスト実行時に Bean を必要とします。デフォルトでは、UTA は必要な Bean メソッドを持つ内部コンフィギュレーション クラスを作成して値を設定することで、テスト ケース内に直接利用可能な Bean を定義します。注意: Spring Boot プロジェクトでテストを作成する場合は、Spring Boot が自動的に依存関係をスキャンできるため、コンフィギュレーション クラスは作成されません) 

あるいは、 @ContextConfiguration アノテーションを使用して XML コンフィギュレーション ファイルまたは別個の Java コンフィギュレーション クラスへの参照をテストに設定することもできます。

  1. [Parasoft] メニューの [設定] > [単体テスト アシスタント] をクリックします。
  2. [Spring フレームワーク テスト] > [作成アクションの有効化] オプションをオンにします。
  3. [デフォルトの ContextConfiguration 属性] フィールドに以下のいずれかを入力します。
    - 1 つまたは複数の XML コンフィギュレーション ファイルへの参照。コンフィギュレーション属性は次のようになります。

    locations={"classpath:/**/FirstContext.xml", "classpath:/**/SecondContext.xml"}

    - 1 つまたは複数の独立した Java コンフィギュレーション クラスへの参照。コンフィギュレーション属性は次のようになります。

    classes={FirstConfigClass.class, SecondConfigClass.class}

次のように [デフォルトの ContextConfiguration 属性] オプションに 2 つのコンフィギュレーション ファイルへの参照を指定できます。

生成された Spring 単体テストには属性が設定された ContextConfiguration アノテーションが追加されます。

ContextConfiguration アノテーションの詳細については、Spring のドキュメント https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/Configuration.html を参照してください。

  • No labels