記事


テストの実行時間の制限


テストが失敗するまでの実行時間に制限を設定します。





概観


一部のテストは、実行速度が遅くなる可能性があります。完了までに多大なシステムリソースを必要とする場合や、サーバーからダウンロードしたデータに依存する場合、あるいは外部要因に依存する場合などです。


テストが無期限にハングしたり、システムリソースを過剰に消費して効率的に完了できない場合は、テストに時間制限を設定することを検討してください。これにより、実行時間が長すぎる場合は失敗としてマークされます。上限値として timeLimit(_:) 特性を使用して下さい。


@Test(.timeLimit(.minutes(60))
func serve100CustomersInOneHour() async {
  for _ in 0 ..< 100 {
    let customer = await Customer.next()
    await customer.order()
    ...
  }
}

上記のテスト関数の実行に 1 時間 (60 x 60 秒) 以上かかる場合、実行中のタスクは cancel され、問題の種類 Issue.Kind.timeLimitExceeded(timeLimitComponents:) でテストは失敗します。


注意

テストに複数の制限時間特性が適用される場合は、最も短い制限時間が使用されます。


テストライブラリは、パフォーマンス上の理由やテスト実行に十分な時間を確保するために、指定された時間制限を調整する場合があります。具体的には、テストには(デフォルトで)1 分の粒度が適用されます。また、テストライブラリでは、適用されている時間制限特性をオーバーライドする、テストごとの最大時間制限を構成することもできます。



テストスイートに適用される時間制限


テストスイートに時間制限を適用すると、そのスイート内のすべてのテスト関数と子テストスイートに再帰的に適用されます。



パラメータ化されたテストに適用される時間制限


パラメーター化されたテスト関数に時間制限を適用すると、各呼び出しに 個別に 適用されるため、一部の引数のみが失敗の原因となった場合、成功した引数も誤って失敗としてマークされることはありません。





以下も見よ


実行時の動作のカスタマイズ


テストの有効化と無効化

個々のテストを実行する前に条件に応じて有効または無効にします。


static func enabled(if: @autoclosure () throws -> Bool, Comment?, sourceLocation: SourceLocation) -> Self

false を返す場合にテストを無効にする条件特性を構築します。


static func enabled(Comment?, sourceLocation: SourceLocation, () async throws -> Bool) -> Self

false を返す場合にテストを無効にする条件特性を構築します。


static func disabled(Comment?, sourceLocation: SourceLocation) -> Self

テストを無条件に無効にする条件特性を構築します。


static func disabled(if: @autoclosure () throws -> Bool, Comment?, sourceLocation: SourceLocation) -> Self

その値が true の場合にテストを無効にする条件特性を構築します。


static func disabled(Comment?, sourceLocation: SourceLocation, () async throws -> Bool) -> Self

その値が true の場合にテストを無効にする条件特性を構築します。


static func timeLimit(TimeLimitTrait.Duration) -> Self

テストの実行時間が長すぎる場合にタイムアウトする時間制限特性を構築します。














トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ