{
    "title": "並列実行 - xUnit.net",
    "useMathjax": false
}

================================================================================

  • 複数のスレッドを利用して、テストクラスがどのように実行されるかを設定する。

テストの並列実行

  • 同じテストクラス内のテストメソッドは、互いに同時には実行されない。
  • 逆に、異なるテストクラス同士は、互いにどういう風に実行されるか分からない。
    • 同時に実行されるかもしれないし、違うかもしれない。

同時に実行しないテストの設定

  • Collection 属性をつけることによって、テストクラス間の同時実行を管理する。
  • 同時に実行されたくないクラスには、Collection 属性をつけ同じ文字列を引数に与える。
[Collection("Our Test Collection #1")]
public class TestClass1
{
    [Fact]
    public void Test1()
    {
        Thread.Sleep(3000);
    }
}

[Collection("Our Test Collection #1")]
public class TestClass2
{
    [Fact]
    public void Test2()
    {
        Thread.Sleep(5000);
    }
}
  • TestClass1TestClass2 は同時には実行されない。

並列実行の初期設定

  • テストプロジェクトの AssemblyInfo.cs に設定をする。
//
[assembly: CollectionBehavior(CollectionBehavior.CollectionPerAssembly)]


// テストの同時実行で利用するスレッド数の最大値
[assembly: CollectionBehavior(MaxParallelThreads = n)]


// このアセンブリ内のテストを並列で処理する
// デフォルト : false
[assembly: CollectionBehavior(DisableTestParallelization = true)]

参考資料