不動の鳥の勉強記録

時間があるときに勉強したことをメモします。

tSQLtでテストケースの作成と実行を行う

■はじめに

ひとつ前の記事でtSQLtのインストールについて記載しました。
これからtSQLtの用意する処理を公式ドキュメントをもとに勉強します。

ひとつ前の記事

hiyo-ac.hatenablog.com

■Test Creation and Execution

tSQLtの公式ドキュメントに次のページがあります。このページについて本記事では紹介します。

tsqlt.org

このドキュメントのページではテストクラスを作成するとどうなるのか?と、テストクラスを実行するとどうなるのかが記載されています。

テストクラスを作成するとどうなるのか?

tSQLt.NewTestClassを用いてテストクラスを作成するとスキーマが作成されます。このスキーマを用いてテストクラスを識別して実行します。注意点はすでに同じスキーマがあった場合ははじめに削除してから作成されます。

テストクラスを実行するとどうなるのか?

  1. テストクラスのスキーマ名のすべてのストアドプロシージャを調べ、これらをテストケースとみなします。
  2. 各テストケースについて下記処理が実行されます。
    1. tSQLt.TestResultテーブルにテストケースが実行されていることを示すレコードが作成されます。
    2. トランザクションを開始します。
    3. テストクラスにSetUpという名前のストアドプロシージャがある場合は、SetUpストアドプロシージャを実行します。
    4. テストケースのストアドプロシージャを実行します。
    5. トランザクションロールバックします。
    6. tSQLt.TestResultのレコードをテストケースの実行結果をで更新します。
  3. すべてのテストケースが完了すると、コンソールに結果が表示されます。

テストケースの実行用のストアドプロシージャに、tSQLt,RunTestClassとtSQLt.RunAllの2種類があります。tSQLt.RunTestClassは引数のスキーマ名のテストクラスを実行します。tSQLt.RunAllはデータベース内のすべてのテストクラスを実行します。

■関連するストアドプロシージャ

ドキュメントサイトには下記ストアドプロシージャについて説明があります。シンタックスなどはドキュメントを参照いただくとし、簡単に概要を記載します。

DropClass

引数のスキーマ名のテストクラスを削除します。スキーマの中に存在するテストケース(ストアドプロシージャ)も削除されるので注意して実行するのをお勧めします。

NewTestClass

引数の名前のテストクラスのスキーマを作成します。すでに同名のスキーマが存在する場合は、存在するスキーマを削除したのち作成します。

RenameClass

第一引数のテストクラスを、第二引数のテストクラス名に変更を行います。テストクラス名を変更した場合は、変更対象のテストクラス内のストアドプロシージャのスキーマ名も変更になります。

Run

引数のテストクラスを実行します。tSQLt.RunTestClassとの違いは、tSQLt.Runの場合は第二引数にテスト結果のフォーマットを指定することができます。指定できるフォーマットは後ほど調べてわかったらコメントに記載したいと思います。

RunAll

データベース内のすべてのテストクラスを実行します。

■おわりに

導入しようとしているフレームワークがどのように動作するのかを把握するのは、非常に大事だと思っています。ブラックボックスのままだと、何か問題が起きた場合にどこが問題かわからないので、公式ドキュメントをもとに基本的な動作を学べました。次の記事もまた公式ドキュメントをもとに、アサーションについて記載していきたいと思います。