[フレーム]
BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

InfoQのすべての体験をアンロックして、そのメリットを最大限に活用しましょう

ログインして、InfoQのすべての体験をアンロックしましょう!お気に入りの著者やトピックの最新情報を入手し、コンテンツと交流し、限定リソースをダウンロードできます。

ログイン
または

アカウントをお持ちでない方

登録
  • あなたにとって重要なトピックや同僚の最新情報を入手しましょう最新の洞察とトレンドに関する最新情報を即座に受け取りましょう。
  • 継続的な学習のために、無料のリソースに手軽にアクセスしましょうミニブック、トランスクリプト付き動画、およびトレーニング教材。
  • 記事を保存して、いつでも読むことができます記事をブックマークして、準備ができたらいつでも読めます。

Topics

地域を選ぶ

InfoQ ホームページ ニュース 新しいフレームワークSwift TestingをAppleが発表、プラットフォーム間のSwiftテストを近代化

新しいフレームワークSwift TestingをAppleが発表、プラットフォーム間のSwiftテストを近代化

2024年10月25日 読了時間 3 分

翻訳者

原文リンク(2024年09月22日)

XCTestがXcodeでテストを作成するための好ましい方法のままである一方で、新しいSwift Testingフレームワークは、Swiftがサポートされている全てのプラットフォームに適用される、テストの定義のための表現力豊かで直感的なAPIを導入しようとしている。フレームワークはまた、パラメトリック化、並列化、分類、テストとバグの関連付けを可能にする。

Swift Testingは、複雑な振る舞いを宣言する慣用的な方法を提供するために、マクロを広範囲に利用する。例えば、これは名前と、それに対して実行されるべき代替入力のセットでテストを宣言する方法だ。

import Testing
...
@Test("Sample test", arguments: [
 "input string 1",
 "input string 2",
 "input string 3"
])
func sampleTest(sampleInput: String) {
 ...
}

上記のテストは3回実行され、それぞれの呼び出しがsampleInputパラメータを通して提供された引数の1つを受け取る。テストをパラメータ化する際には、複数の入力を扱うこともできる。この場合、@Testargumentsにはコレクションのリストを指定し、テスト関数はそれぞれのコレクションから、2つのコレクションの値の可能な組み合わせごとに引数を受け取ることになる。

@Test("Multiple collections as test inputs", arguments: 0...100, ["a", ..., "z"])
func test(number: Int, letter: String) {
}

arguments型に対する特定の条件下で、パラメトリックなテストを選択的に実行可能であり、入力値の可能なすべての組み合わせに対してテストを実行する必要がない。

オプションで名前と引数のリストを指定するだけでなく、@Testマクロはテスト関数にtraits を関連付けることもサポートしている。既存の特質により、実行時の条件に基づいてテストを有効または無効にしたり、テストの実行時間を制限したり、テストを連続または並行して実行したり、テストをバグに関連付けたりすることができる。例えば、あるアプリの機能が有効になっている場合にのみテストを実行するには、次のようにする。

@Test(.enabled(if: App.ConditionToMatch))
func conditionalTest() {
 ...
}

開発者は、testtraitに準拠した型を実装することで、独自の特性を定義できる。

テストをパラメータ化することで、失敗した場合に生成される診断が、失敗した入力を明確に示すという利点もある。

テスト関数は、テスト・スイートにまとめることができる。これを行う伝統的な方法は、同じテストclassにそれらを配置することである。Swift Testing はそのための特別なマクロ@Suite も提供する。テストスイートに属するすべてのテスト関数は、tags(_:)disabled(_:sourceLocation:)を含む、スイートから同じ特徴を継承する。

テスト結果を検証するために、Swift Testingは2つのマクロexpect(_:_:sourceLocation:)require(_:_:sourceLocation:)を提供する。require はその条件が満たされないときに例外を投げてテストの実行を停止するが、expect は詳細な情報を表示する。

重要な注意点として、リリース用にビルドする際、テスト関数はバイナリから取り除かれない。このため、Appleはテスト・ライブラリをメインの実行ファイルとリンクされていないテスト・ターゲットにインポートすることを強く勧めている。

Swift TestingはGitHubと、 Swift Package Indexで入手可能で、Swift 6が必要だ。XCTestとSwift Testingは同じプロジェクトで共存できるので、新しいフレームワークを採用したい場合、必ずしも既存のテストを移行する必要はない。

作者について

Sergio De Simone

もっと見るより少なく

この記事に星をつける

おすすめ度
スタイル
  • 関連記事

    • 関連スポンサーコンテンツ

特集コンテンツ一覧

InfoQ ニュースレター

毎週火曜日に前週のまとめコンテンツをお送りいたします。(日本語版は不定期リリース)25万人のシニアな開発者コミュニティーにぜひご参加ください。 サンプルを見る

We protect your privacy.

BT

AltStyle によって変換されたページ (->オリジナル) /