記事


テストを連続してまたは並列に実行する


テストを連続して実行するか並列に実行するかを制御します。





概観


デフォルトでは、テストは互いに並列に実行されます。並列化はテストライブラリによってタスクグループを使用して実現され、通常、すべてのテストは同じプロセスで実行されます。同時に実行されるテストの数は、Swift ランタイムによって制御されます。



並列化処理を無効にする


並列化は、serialized 特性を使用して関数ごとまたはスイートごとに無効にすることができます。


@Test(.serialized, arguments: Food.allCases) func prepare(food: Food) {
  // This function will be invoked serially, once per food, because it has the
  // .serialized trait.
}

@Suite(.serialized) struct FoodTruckTests {
  @Test(arguments: Condiment.allCases) func refill(condiment: Condiment) {
    // This function will be invoked serially, once per condiment, because the
    // containing suite has the .serialized trait.
  }

  @Test func startEngine() async throws {
    // This function will not run while refill(condiment:) is running. One test
    // must end before the other will start.
  }
}

この特性をパラメータ化されたテスト関数に追加すると、そのテストはそのケースを並列ではなく連続して実行します。パラメータ化されていないテスト関数に適用した場合、この特性は効果がありません。テストスイートに適用した場合、この特性はスイートに含まれるテスト関数とサブスイートを並列ではなく連続して実行します。


この特性は再帰的に適用されます。スイートに適用すると、そのスイートに含まれるパラメータ化されたテストまたはテストスイートも全て連続化されます (それらのスイートに含まれる全てのテストも同様です)。

この特性は、テストの実行を、その仲間のテストや無関係なテストと比較して、影響するものではありません。テストの並列化がグローバルに無効化されている場合 (例えば、swift test コマンドに --no-parallel を渡すなど)、この特性は効果がありません。





以下も見よ


テストを連続してまたは並列に実行する


static var serialized: ParallelizationTrait

適用されたテストを連続処理化する特性。














トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ