Class AbstractHttpRequestTestTemplate<INF extends TestCaseInfo>

Type Parameters:
INF - テストケース情報の型
Direct Known Subclasses:
BasicHttpRequestTestTemplate

@Published public abstract class AbstractHttpRequestTestTemplate<INF extends TestCaseInfo> extends HttpRequestTestSupport
リクエスト単体テストをテンプレート化するクラス。
本クラスを使用することで、リクエスト単体テストのテストソース、テストデータを 定型化することができる。

 指定されたテストシートに定義されたテストを実行する.
実行順序は以下のとおり。 1. データシートからテストケースリスト(testCases LISTMAP)を取得 2. 取得したテストケース分、以下を繰り返し実行 1) データベース初期化 2) ExecutionContext、HTTPリクエストを生成 3) 業務テストコード用拡張ポイント呼出(beforeExecuteRequestメソッド) 4) Tokenが必要な場合、Tokenを設定 5) テスト対象のリクエスト実行 6) 実行結果の検証 ・HTTPステータスコード および メッセージID ・HTTPレスポンス値(リクエストスコープ値) ・検索結果 ・テーブル更新結果 ・フォワード先URI ・メッセージ同期送信で送信されたメッセージ 7) 業務テストコード用拡張ポイント呼出(afterExecuteRequestメソッド) ※セッションスコープは原則利用しないため検証しない。  必要な場合afterExecuteRequestメソッドを拡張して検証すること。

テンプレートの拡張が可能となるよう、TestCaseInfoの型を総称化している。 TestCaseInfo のサブクラスを作成し、本クラスのサブクラスでその型を指定することで、テンプレートを拡張できる。 以下に例を示す。

 public abstract class SpecialHttpRequestTestTemplate extends AbstractHttpRequestTestTemplate {
 
  • Constructor Details

    • AbstractHttpRequestTestTemplate

      protected AbstractHttpRequestTestTemplate()
      コンストラクタ。
    • AbstractHttpRequestTestTemplate

      public AbstractHttpRequestTestTemplate(Class<?> testClass)
      コンストラクタ。
      Parameters:
      testClass - テストクラス
  • Method Details

    • execute

      public void execute()
      テストを実行する。
      実行前後に特別な処理が不要な場合は、このメソッドを使用する。
    • execute

      public void execute(String sheetName)
      テストを実行する。
      実行前後に特別な処理が不要な場合は、このメソッドを使用する。
      Parameters:
      sheetName - テスト対象のシート名
    • execute

      public void execute(boolean shouldSetUpDb)
      テストを実行する。 データベースのセットアップ要否を指定できる。
      Parameters:
      shouldSetUpDb - データベースのセットアップ要否
    • execute

      public void execute(String sheetName, boolean shouldSetUpDb)
      テストを実行する。 データベースのセットアップ要否を指定できる。
      Parameters:
      sheetName - シート名
      shouldSetUpDb - データベースのセットアップ要否
    • execute

      public void execute(Advice<INF> advice)
      テストを実行する。 テスト前後に特別な準備処理や結果確認処理が必要な場合はこのメソッドを使用する。
      Parameters:
      advice - 実行前後の処理を実装したAdvice
    • execute

      public void execute(String sheetName, Advice<INF> advice)
      テストを実行する。 テスト前後に特別な準備処理や結果確認処理が必要な場合はこのメソッドを使用する。
      Parameters:
      sheetName - テスト対象シート名
      advice - 実行前後の処理を実装したAdvice
    • execute

      public void execute(Advice<INF> advice, boolean shouldSetUpDb)
      テストを実行する。
      Parameters:
      advice - コールバック
      shouldSetUpDb - データベースのセットアップ要否
    • execute

      public void execute(String sheetName, Advice<INF> advice, boolean shouldSetUpDb)
      テストを実行する。
      Parameters:
      sheetName - シート名
      advice - コールバック
      shouldSetUpDb - データベースのセットアップ要否
    • executeTestCase

      protected void executeTestCase(String sheetName, Map<String,String> testCaseParams, Advice<INF> advice)
      テストケースを実行する。
      Parameters:
      sheetName - シート名
      testCaseParams - テストケースパラメータ
      advice - 実行前後の処理を実装したAdvice
    • clearPreviousTestData

      protected void clearPreviousTestData(INF testCaseInfo)
      テストで使用するデータのキャッシュをクリアする
      Parameters:
      testCaseInfo - テストケース情報
    • setUp

      protected void setUp(INF testCaseInfo, Map<String,String> testCaseParams)
      準備を行う。
      Parameters:
      testCaseInfo - テストケース情報
      testCaseParams - テストケースパラメータ
    • setUpDbForTestCase

      protected void setUpDbForTestCase(INF testCaseInfo)
      テストケース毎のデータベースセットアップを行う。
      Parameters:
      testCaseInfo - テストケース情報
    • setUpMessage

      protected void setUpMessage(INF testCaseInfo, Map<String,String> testCaseParams)
      メッセージ同期送信のリクエスト単体テストを実行するための準備を行う
      Parameters:
      testCaseInfo - テストケース情報
      testCaseParams - テストケースパラメータ
    • createTestCaseInfo

      protected INF createTestCaseInfo(String sheetName, Map<String,String> testCaseParams)
      テストケース情報を作成する。
      Parameters:
      sheetName - シート名
      testCaseParams - テストケースパラメータ
      Returns:
      作成したテストケース情報
    • createTestCaseInfo

      protected INF createTestCaseInfo(String sheetName, Map<String,String> testCaseParams, List<Map<String,String>> contexts, List<Map<String,String>> requests, List<Map<String,String>> expectedResponses, List<Map<String,String>> cookie, List<Map<String,String>> queryParams)
      テストケース情報を作成する。
      Parameters:
      sheetName - シート名
      testCaseParams - テストケースパラメータ
      contexts - コンテキスト全件
      requests - リクエスト全件
      expectedResponses - 期待するレスポンス全件
      cookie - 本テストで使用するクッキー情報
      queryParams - 本テストで使用するクエリパラメータ情報
      Returns:
      作成したテストケース情報
    • createTestCaseInfo

      protected INF createTestCaseInfo(String sheetName, Map<String,String> testCaseParams, List<Map<String,String>> contexts, List<Map<String,String>> requests, List<Map<String,String>> expectedResponses, List<Map<String,String>> cookie)
      テストケース情報を作成する。
      Parameters:
      sheetName - シート名
      testCaseParams - テストケースパラメータ
      contexts - コンテキスト全件
      requests - リクエスト全件
      expectedResponses - 期待するレスポンス全件
      cookie - 本テストで使用するクッキー情報
      Returns:
      作成したテストケース情報
    • createExecutionContext

      protected ExecutionContext createExecutionContext(INF testCaseInfo)
      ExecutionContextを生成する。
      Parameters:
      testCaseInfo - テスト情報
      Returns:
      ExecutionContextインスタンス
    • createHttpRequest

      protected HttpRequest createHttpRequest(INF testCaseInfo)
      HTTPRequestパラメータを生成する。
      Parameters:
      testCaseInfo - テスト情報
      Returns:
      HttpRequestインスタンス
    • assertAll

      protected void assertAll(INF testCaseInfo, Map<String,String> testCaseParams, ExecutionContext context, HttpResponse response)
      全アサートを実行する。
      以下の項目についてアサートを実施する。
      • HTTPステータスコードおよびメッセージID
      • リクエストスコープの値検証
      • 検索結果の検証
      • テーブル更新結果の検証
      • フォワード先URI
      • メッセージ同期送信で送信されたメッセージ
      Parameters:
      testCaseInfo - テストケース情報
      testCaseParams - テストケースパラメータ
      context - ExecutionContextインスタンス
      response - HttpResponseインスタンス
    • assertResponse

      protected void assertResponse(INF testCaseInfo, HttpResponse response)
      HTTPレスポンスオブジェクトの内容をアサートする。
      Parameters:
      testCaseInfo - テストケース情報
      response - レスポンスオブジェクト
    • assertContentLength

      protected void assertContentLength(INF testCaseInfo, ExecutionContext context)
      コンテンツレングス・ヘッダの値をアサートする。
      Parameters:
      testCaseInfo - テストケース情報
      context - ExecutionContext
    • assertContentType

      protected void assertContentType(INF testCaseInfo, HttpResponse response)
      コンテンツタイプ・ヘッダの値をアサートする。
      Parameters:
      testCaseInfo - テストケース情報
      response - HTTPレスポンス
    • assertContentFileName

      protected void assertContentFileName(INF testCaseInfo, HttpResponse response, ExecutionContext context)
      コンテンツディスポジション・ヘッダに指定されたファイル名をアサートする。

      コンテンツタイプがHTMLの場合はアサートしない。

      Parameters:
      testCaseInfo - テストケース情報
      response - HTTPレスポンス
      context - ExecutionContext
    • assertForwardUri

      protected void assertForwardUri(INF testCaseInfo)
      フォワード先URIをアサートする。
      Parameters:
      testCaseInfo - テストケース情報
    • getCachedListMap

      protected List<Map<String,String>> getCachedListMap(String sheetName, String listMapName)
      キャッシュからLIST_MAPを取得する。
      キャッシュにない場合は、データシートから取得しメモリ上にキャッシュする。
      Parameters:
      sheetName - データシート名
      listMapName - LIST_MAP名
      Returns:
      LIST_MAP
    • getBaseUri

      protected abstract String getBaseUri()
      ベースURIを返却する。
      Returns:
      ベースURI
    • beforeExecuteRequest

      protected void beforeExecuteRequest(INF testCaseInfo, ExecutionContext context, Advice<INF> advice)
      各業務テストコードの拡張ポイント
      テスト対象リクエストの実行前に呼び出される。
      Parameters:
      testCaseInfo - テストケース情報
      context - ExecutionContextインスタンス
      advice - 実行前後の処理を実装したAdvice
    • afterExecuteRequest

      protected void afterExecuteRequest(INF testCaseInfo, ExecutionContext context, Advice<INF> advice)
      各業務テストコードの拡張ポイント
      テスト対象リクエストの実行後に呼び出される。処理が不要であれば空実装でかまわない。
      Parameters:
      testCaseInfo - テストケース情報
      context - ExecutionContextインスタンス
      advice - 実行前後の処理を実装したAdvice