Sponsor Link
環境&対象
- macOS15.0.1 Sequoia
- Xcode 16.1 Beta3
- iOS 18.1
- Swift 5.9
.tags
swift-testing では、.tags という trait を使うと、テスト関数やテストスートに タグを付与することができます。
以下は、myLocalTag というタグを付与しています。
struct SwiftTestingTraitsTests {
@Test(.tags(.myLocalTag)
)
func someSpecialFunctionality() async throws {
// ....
#expect(1 == 1)
}
}
上記のようにタグを使用するためには、以下のように定義しておかないといけません。
extension Tag {
@Tag static var myLocalTag: Self
}
tag の namespace
この時、Tag の extension で定義しているため、Tag に使用できる名称は Tag の中でユニークであることが必要です。
プロジェクトが大きくなると、この名称が重複してしまうかも知れません。
名称が重要であるような時には、以下のように 逆DNSの名称をつかった enum を使用して重複しないようにすることがドキュメントで解説されています。
extension Tag {
@Tag static var myLocalTag: Self
@Tag static var myLocalTag2: Self
}
extension Tag {
public enum com_smalldesksoftware_moneyclip {}
}
extension Tag.com_smalldesksoftware_moneyclip {
@Tag static var syncWithiCloud: Tag
@Tag static var syncWithFirestore: Tag
}
テストに付与するには、以下のように使用します。
struct SwiftTestingTraitsTests {
@Test(.tags(.myLocalTag, .com_smalldesksoftware_moneyclip.syncWithiCloud))
func testSync1() async throws {
// ....
#expect(1 == 1)
}
@Test(.tags(.myLocalTag2,.com_smalldesksoftware_moneyclip.syncWithFirestore))
func testSync2() async throws {
// ....
#expect(1 == 1)
}
}
Xcode 上で確認すると 以下のような表示になります。

特に、enum でまとめたものがグループ化されるわけではありません。
まとめ
swift-testing の trait である .tags に使用する Tag の名称を名前空間に入れる方法を確認しました。
- Tag の extension に enum を入れる(逆DNSをつけると 重複リスクが低い)
- Tag の extension にした enum を使って 名称を定義する
説明は以上です。
不明な点やおかしな点ありましたら、こちらまで。
SwiftUI おすすめ本
SwiftUI を理解するには、以下の本がおすすめです。
SwiftUI ViewMatery
SwiftUI で開発していくときに、ViewやLayoutのための適切なmodifierを探すのが大変です。
英語での説明になってしまいますが、以下の”SwiftUI Views Mastery Bundle”という本がビジュアル的に確認して探せるので、便利です。
英語ではありますが、1ページに コードと画面が並んでいるので、非常にわかりやすいです。
View に適用できる modifier もわかりやすく説明されているので、ビューの理解だけではなく、どのような装飾ができるかも簡単にわかります。
超便利です
販売元のページは、こちらです。
SwiftUI 徹底入門
# SwiftUI は、毎年大きく改善されていますので、少し古くなってしまいましたが、いまでも 定番本です。
Swift学習におすすめの本
詳解Swift
Swift の学習には、詳解 Swift という書籍が、おすすめです。
著者は、Swift の初期から書籍を出していますし、Swift の前に主力言語だった Objective-C という言語についても同様の書籍を出しています。
最新版を購入するのがおすすめです。
現時点では、上記の Swift 5 に対応した第5版が最新版です。
Sponsor Link