4.3.3 テストの初期化処理と終了処理
ここまでの解説では、Visual Studio 2005およびSQL Server 2005のファイルアタッチデータベース機能を活用した便利なテスト手法を解説してきた。しかし、場合によってはOracleやSQL Server 2000などを利用しているため、これらの手法が利用できないこともある。このようなケースでは、テストの初期化処理の機能を活用して、テスト開始時にテスト用データベースの初期化などを行うとよい*100。リスト4-12にこれらを行うためのメソッドシグネチャを示す*101。
*100 コードサンプルからわかるように終了処理も記述することができるが、終了処理はデバッグモードでテストを実行する場合には呼び出されない。このため、基本的には終了処理は使わないようにした方がよいだろう。 |
*101 この機能を利用する場合には、シグネチャ(パラメータ)について完全に合致させる必要がある。シグネチャが完全に一致しない場合、テストランタイムはこれらの処理を認識しない。 |
[AssemblyInitialize()]
public static void AssemblyInitialize(TestContext myTestContext) {
// アセンブリがロードされたタイミングで一度だけ呼び出される
}
[ClassInitialize()]
public static void ClassInitialize(TestContext myTestContext) {
// 当該クラスが呼び出されたタイミングで一度だけ呼び出される
}
[TestInitialize()]
public void TestInitialize() {
// 各TestMethod の実行前にそれぞれ呼び出される
}
|
<AssemblyInitialize()> _
Public Shared Sub AssemblyInitialize(ByVal myTestContext As TestContext)
' アセンブリがロードされたタイミングで一度だけ呼び出される
End Sub
<ClassInitialize()> _
Public Shared Sub ClassInitialize(ByVal myTestContext As TestContext)
' 当該クラスが呼び出されたタイミングで一度だけ呼び出される
End Sub
<TestInitialize()> _
Public Sub TestInitialize()
' 各TestMethod の実行前にそれぞれ呼び出される
End Sub
|
|
リスト 4-12 テストの初期化処理と終了処理 |
3.1.4 データアクセスクラスに対する単体機能テスト ― まとめ
ここまでの解説の要点をまとめると、以下のようになる。
- データアクセスクラスの単体機能テストでは、ファイルアタッチデータベース機能を活用すると便利である。
- テスト用データが含まれたファイルアタッチ用データベースファイルをビジネスロジックプロジェクト側に配置しておき、これを開発とテストの両方で利用する。
- テストコードを記述する際は、自動生成されたコードを検証するようなテストケースは除外して考える。
- 自分が記述したSQL文が期待通りに動作するか否かを検証するようなテストケースを中心に記述していく。
- 更新系データアクセス処理をテストする場合は、自動トランザクション機能を活用する。
- テストメソッドがどの順番で実行されても構わないように、各テストメソッド終了時にデータベースを元に戻す。
- System.Transactionsの機能を活用したテストコードを記述すると、これを簡単に行うことができる。
データアクセスクラスに対する単体機能テストの解説は以上である。引き続き、ビジネスロジッククラスに対する単体機能テストの記述方法について解説しよう。
Insider.NET 記事ランキング
本日
月間