Section 6/121 menit
6. Tags dan Traits
6. Tags dan Traits
Mendefinisikan Tags
swift
// Tags untuk kategorisasi
extension Tag {
@Tag static var critical: Self
@Tag static var network: Self
@Tag static var ui: Self
@Tag static var slow: Self
@Tag static var regression: Self
}
// Gunakan di test
@Test("Payment processing", .tags(.critical, .network))
func processPayment() async throws {
// ...
}
@Test("User list rendering", .tags(.ui))
func userListRenders() {
// ...
}
Traits Lainnya
swift
// .disabled: skip test dengan alasan
@Test("Feature flag integration", .disabled("Menunggu feature flag service"))
func featureFlagTest() { }
// .bug: link ke bug tracker
@Test("Handle null response", .bug("https://github.com/org/repo/issues/42"))
func nullResponseHandling() async throws {
// Test untuk bug yang sudah difix
}
// .timeLimit: batas waktu eksekusi
@Test("Cache warming", .timeLimit(.minutes(2)))
func cacheWarmingCompletes() async throws {
try await cacheService.warmUp()
}
// .serialized: jalankan secara serial (tidak paralel)
@Suite("Integration Tests", .serialized)
struct IntegrationTests {
// Test di suite ini tidak dijalankan paralel satu sama lain
// (tapi masih paralel dengan suite lain)
}
Menjalankan Test Berdasarkan Tag
swift
# Di command line:
swift test --filter ".tags(.critical)"
swift test --filter ".tags(.network)"
swift test --skip ".tags(.slow)"
# Di Xcode: gunakan Test Plan untuk filter berdasarkan tag