BDDFrameworkを試してみる(2)1ケース実装してみる

前回、BDDFrameworkの概要を確認しました。

今回は1ケースを対象に実際にテストを書いてみます。

テスト内容

長時間動作するバッチ処理があり、その進行状況をステップごとに記録していくとします。

  • テスト対象で操作するEntity JobStatus
    • Id
    • JobId(ジョブを特定するId),
    • Step(そのジョブの何ステップ目か)
    • ExecutedDateTime(ステップ終了日時)
    • Message(管理者向け進行状況メッセージ)
  • テスト対象:GetJobStatusMessage Action
    • JobStatusをJobIdで検索し、管理者向けのメッセージを返す
    • 入力パラメータ:JobId
    • 出力パラメータ:管理者向けのメッセージ(各ステップの終了日時とメッセージを結合し、ステップごとに改行文字で区切ったもの)
  • テストケース
    • Given(前提条件の成立を確認する):JobId=2のバッチジョブにStep=1とStep=2が記録されている
    • When(テスト操作):GetJobStatusMessageをJobId=2で呼び出す
    • Then(テスト結果の確認):出力パラメータが「Step1 <実行日時> メッセージ<改行>Step2 <実行日時> メッセージ」である

テストケース作成

まずは、テスト対象モジュールとは別のアプリケーションにテストモジュールを作成し、テスト対象モジュールとBDDFrameworkを参照しておきます。

テストケースは、BDDScenarioというWeb Block1つで表されます。

従って、まずはテストケースを配置する画面を作成。

作成した画面にBDDScenarioをドラッグ&ドロップで配置します。

テストケースの説明

ここは普通の文字列で設定します。

例:2ステップ持つジョブを指定してメッセージが結合されることを確認

テストケースの本体

3つのPlaceholderそれぞれに、BDDStep Blockをドラッグ&ドロップし、Destinationに用意したActionを設定していきます。

テストケースのAction名には共通のプレフィックス(例えば、ステップ2つを使ったテストという意味で、「TwoSteps_」のような)をつけることが勧められています。

TwoSteps_Given

テスト準備として、テスト対象ジョブID=2のレコードが、テストに使う2レコードだけになるように準備しています。本当はテストデータの準備はSetupでやるようですが、Setupはこのシリーズの(3)でやるので、今回はここでテストデータを準備しています。

TwoSteps_When

テスト対象Actionを呼び、後で検証に使うために出力を画面のローカル変数に格納しています。

TwoStep_Then

いわゆるAssert(BDDFramework提供のActionです)を呼び出して、結果が特定の条件を満たすことを検証しています。

作成後のScenario

テスト実行

いつも通りにテストモジュールを1-Click Publishしてブラウザてテスト画面を開くとテストが実行されます。

下の実行結果サンプルは、テストだけ作成し、テスト対象Actionは空にした場合です。ThenでAssertが失敗しているため、背景が赤くなっています。

TDD的にやるなら、この画面を見てから、テスト対象Actionを実行し、再度Publishしてブラウザで開き直すという手順ですね。

テスト対象モジュール修正→パブリッシュ→テストモジュール参照更新→パブリッシュ→ブラウザでテスト、という手順は重いですね。

テスト対象モジュールを実装してから再テスト。全部グリーンになりました。

シリーズ一覧

シェアする

  • このエントリーをはてなブックマークに追加

フォローする