XCode 16.3 日本語化計画
コードがあなたの期待どおりにエラーを処理することを確認します。
あなたのコードがエラーを throw する条件と、エラーを throw せずに復帰する条件を検証するテストを記述してください。エラーをチェックする expect(_:_:sourceLocation:) マクロと require(_:_:sourceLocation:) マクロのオーバーロードを使用してください。
テスト対象コードでエラーを throw し test するテスト関数を作成します。コードがエラーを throw した場合、あなたのテストは失敗します。
テスト対象コードが特定のエラーを throw したかを確認したり、エラーを throw するコードを発生後に長いテスト関数を継続したりするには、expect(throws:_:sourceLocation:performing:) の最初の引数としてそのエラーを渡し、テスト対象コードを呼び出すクロージャを渡します。
@Test func cannotAddToppingToPizzaBeforeStartOfList() { var order = PizzaToppings(bases: [.calzone, .deepCrust]) #expect(throws: PizzaToppings.Error.outOfRange) { try order.add(topping: .mozarella, toPizzasIn: -1..<0) } }
クロージャがエラーを throw せずに完了した場合、テストライブラリは問題を記録します。Swift コード内のエラーのテスト expect(_:_:sourceLocation:) の他のオーバーロードを使用すると、コードが与えられた型のエラーを throw するか、任意のブールテストに一致するかをテストできます。require(_:_:sourceLocation:) の同様のオーバーロードは、コードが期待されたエラーを throw しない場合、あなたのテストの実行を停止します。
テスト対象のコードが任意の型のエラーを throw することを確認するには、expect(throws:_:sourceLocation:performing:) または require(throws:_:sourceLocation:performing:) の最初の引数として (any Error).self を渡します。
@Test func cannotAddToppingToPizzaBeforeStartOfList() { var order = PizzaToppings(bases: [.calzone, .deepCrust]) #expect(throws: (any Error).self) { try order.add(topping: .mozarella, toPizzasIn: -1..<0) } }
エラーを throw するテスト関数は失敗します。これは通常、テスト対象のコードがエラーを throw しないことをテストするのに十分です。テスト関数を停止せずに、throw されたエラーを問題として記録する必要がある場合は、エラーを Never と比較して下さい。
@Test func canAddToppingToPizzaInPositionZero() throws { var order = PizzaToppings(bases: [.thinCrust, .thinCrust]) #expect(throws: Never.self) { try order.add(topping: .caper, toPizzasIn: 0..<1) } let toppings = try order.toppings(forPizzaAt: 0) #expect(toppings == [.caper]) }
クロージャが何かの エラーを throw した場合、テストライブラリは問題を記録します。コードがエラーを throw したときにテストを停止する必要がある場合は、expect(throws:_:sourceLocation:performing:) への呼び出しで囲むのではなく、テスト関数内にコードをインラインで含めてください。
#expect(throws:) または #require(throws:) を使用し、エラーが期待値と一致する場合、そのエラーは呼び出し元に返され、追加の検証を行うことができます。エラーが全く throw されなかった、または異なる型のエラーが throw されたために期待が失敗した場合、#expect(throws:) は nil を返します。
@Test func cannotAddMarshmallowsToPizza() throws { let error = #expect(throws: PizzaToppings.InvalidToppingError.self) { try Pizza.current.add(topping: .marshmallows) } #expect(error?.topping == .marshmallows) #expect(error?.reason == .dessertToppingOnly) }
どのような型のエラーが throw されるかわからない場合は、(any Error).self を渡します。
式が常に与えられた型のエラーを throw することを確認します。
式が常に特定のエラーを throw することを確認します。
式が常に何らかの条件に一致するエラーを throw することを確認します。
  廃止  
式が常に与えられた型のエラーを throw することを確認し、そうでない場合はエラーを throw します。
式が常に何らかの条件に一致するエラーを throw することを確認し、そうでない場合はエラーを throw します。
  廃止