TestSuite
- 複数の
Assert
を1つのテストメソッドにまとめる。 - それらのテストメソッドを1つのクラスにまとめる。(
TestSuite
) - このテストの間で共通に使いまわしたいリソースの管理方法を紹介する。
Constructor と Dispose
- テストクラスのコンストラクタで前処理を行う。(
SetUp
に相当) -
IDisposable
インターフェースのDispose
メソッドで後始末を行う(TreatDown
に相当) - テストクラス内で使いまわしたいリソースは、メンバーとして宣言し、コンストラクタで初期化し、
Dispose
で破棄する
public class Tests : IDisposable
{
public Tests()
{
// テスト前の処理
}
public void Dispose()
{
// テスト後の処理
}
}
Class Fixtures
- 一つのデータを複数のテストクラスで共有する方法
- 全てのテストの前に前準備 (
SetUp
) を行い、全てのテストが終わったら後始末 (TreatDown
) したい場合に使用する。
手順
- データを保持するクラスを作成する
- コンストラクタで初期化して、
IDisposable
のDispose
で破棄処理を行う
- コンストラクタで初期化して、
- データを利用するテストクラスを作成する
-
IClassFixture<T>
を継承する -
IClassFixture<T>
の型引数に、さっき作ったデータクラスを入れる - さっき作ったデータクラスを一つ受け取るコンストラクタを作成する
- コンストラクタで受け取ったデータをメンバーに格納して、各テストメソッドから利用する
- コンストラクタで渡される値が、テストクラス間で共通に利用できるシングルトンになっている
-
/// <summary>
/// テスト用のデータを格納するクラス
/// </summary>
public class TestFixture : IDisposable
{
public TestFixture()
{
// Context の初期化処理
}
public void Dispose()
{
// Context の終了処理
}
}
/// <summary>
/// テスト用のデータを実際に利用する側のクラス
/// </summary>
public class Tests : IClassFixture<TestFixture>
{
TestFixture fixture;
public Tests(TestFixture fixture)
{
// テスト用 Context のシングルトンがここの引数で渡される。
this.fixture = fixture;
}
// テストをいつも通り書く
}