LoginSignup
5
7

More than 5 years have passed since last update.

xUnit.net の使い方(Context)

Last updated at Posted at 2016-09-01

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) したい場合に使用する。

手順

  1. データを保持するクラスを作成する
    • コンストラクタで初期化して、 IDisposableDispose で破棄処理を行う
  2. データを利用するテストクラスを作成する
    • 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;
    }

    // テストをいつも通り書く
}

参考資料

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7