NUnit 3.8.0.0、.NET 4.0、およびC#を使用して、パラメータ化されたフィクスチャとメソッドによるテスト並列化に関する質問があります。Fixtureを実行していても並列ではないメソッドNUnit
私は現在、一連のリソース内の各リソースを使用してテストを実行するテストスイートを開発中です。これらのリソースを初期化するのはかなり時間がかかり、リソースは状態を保持しないため、テストケース間でリソースを共有してパフォーマンスを向上させたいと考えています。これらのリソースは複数のテストで同時にを使用することはできません。
これを行うために、私はconstuctorを1つの引数で取ってベースフィクスチャを作って、フィクスチャが正しいリソースを指し示すようにしました。実際のテストフィクスチャはこのフィクスチャのサブクラスです。
私はconstuctor引数(基本クラスに渡される)とテストケース引数の両方を使用するテストフィクスチャを持っています。このパラメータに基づいて、基本クラスはいくつかのリソースを初期化します。これらのリソースは同時に使用することはできません。
これらのテストケースをクラスMyParameterizedTestFixture(V1)
,MyParameterizedTestFixture(V2)
によって生成された異なるフィクスチャのテストで並列化しようとしています。同時に実行することはできますが、同じフィクスチャでのテストは(リソースが同時に使用できないため)実行できません。さらに、異なるフィクスチャクラス may が並行して実行されます。
私のコードは、(抽象化の詳細が)次のようになります。
[TestFixture]
[TestFixtureSource(typeof(TestData), "FixtureParams")]
public class MyParameterizedTestFixture : BaseFixture
{
public MyParameterizedTestFixture(Resource resource) : base (resource) { }
[Test]
public void Test1() { /* run test using Resource */ }
[TestCaseSource("Params")]
public void TestParameterized(object param) { /* run test using Resource and param */ }
}
私は私の派生備品にParallelizable(ParallelScope.Self)]
を追加しようとしましたが、同じリソースを(使用して、異なる器具からのテストの結果はすなわち、同じを持つことversion
)fixtureパラメータは、同時に実行されます(1つのフィクスチャを選択するだけで動作します)。
[Parallelizable(ParallelScope.Fixture)]
を使用すると、違うフィクスチャが一緒に実行されるため、間違いがあります。 [Parallelizable(ParallelScope.Children)]
を使用しても、同じクラスの異なるフィクスチャではなく、フィクスチャで異なるテストケースが一緒に実行されるため、正しくありません。
私は、階層化されたアプローチ(何らかの方法で並列化可能なフィクスチャーと別の方法でのマーキング)を使用してアーカイブするか、カスタムパラレルスコープを定義することができますか?