- 複数のスレッドを利用して、テストクラスがどのように実行されるかを設定する。
テストの並列実行
- 同じテストクラス内のテストメソッドは、互いに同時には実行されない。
- 逆に、異なるテストクラス同士は、互いにどういう風に実行されるか分からない。
- 同時に実行されるかもしれないし、違うかもしれない。
同時に実行しないテストの設定
-
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);
}
}
-
TestClass1
とTestClass2
は同時には実行されない。
並列実行の初期設定
- テストプロジェクトの
AssemblyInfo.cs
に設定をする。
//
[assembly: CollectionBehavior(CollectionBehavior.CollectionPerAssembly)]
// テストの同時実行で利用するスレッド数の最大値
[assembly: CollectionBehavior(MaxParallelThreads = n)]
// このアセンブリ内のテストを並列で処理する
// デフォルト : false
[assembly: CollectionBehavior(DisableTestParallelization = true)]