Penyiapan, Pembongkaran, dan Metode Pengujian XCTestCase
Menyusun class pengujian dengan setUp/tearDown dan menamai metode pengujian.
Penyiapan, Pembongkaran, dan Metode Pengujian XCTestCase adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Swift Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Swift Academy mencakup 4 pelajaran total.
Dasar XCTestCase
XCTestCase adalah kelas dasar untuk semua pengujian unit Swift. Setiap metode yang diawali dengan "test" merupakan kasus pengujian.
import XCTest
final class MathTests: XCTestCase {
func testAddition() {
XCTAssertEqual(2 + 2, 4)
}
}setUp dan tearDown
setUp() berjalan sebelum setiap pengujian. tearDown() berjalan setelah setiap pengujian. Gunakan keduanya untuk menginisialisasi keadaan bersama dan melakukan pembersihan.
final class UserServiceTests: XCTestCase {
var sut: UserService!
override func setUp() {
super.setUp()
sut = UserService()
}
override func tearDown() {
sut = nil
super.tearDown()
}
}setUpWithError dan tearDownWithError
Varian setUp/tearDown yang dapat melemparkan kesalahan: jika penyiapan menghasilkan kesalahan, pengujian otomatis ditandai gagal.
override func setUpWithError() throws {
sut = try UserService(config: loadTestConfig())
}
override func tearDownWithError() throws {
try sut.cleanup()
}Penyiapan Tingkat Kelas
class setUp() dan class tearDown() berjalan satu kali sebelum/sesudah semua pengujian dalam kelas—berguna untuk sumber daya bersama yang mahal.
final class DBTests: XCTestCase {
static var db: TestDatabase!
override class func setUp() {
super.setUp()
db = TestDatabase.inMemory()
}
override class func tearDown() {
db.close()
super.tearDown()
}
}Menamai Metode Pengujian
Beri nama pengujian dengan pola test_methodName_condition_expectedResult agar mudah dibaca dan menghasilkan pesan kegagalan yang jelas.
func test_login_withValidCredentials_returnsUser() throws { ... }
func test_login_withInvalidPassword_throwsUnauthorized() throws { ... }addTeardownBlock
Daftarkan blok pembersihan per pengujian secara langsung tanpa menimpa tearDown.
func testCreateFile() throws {
let url = FileManager.default.temporaryDirectory.appendingPathComponent("test.txt")
addTeardownBlock { try? FileManager.default.removeItem(at: url) }
// ... test
}Menonaktifkan Pengujian
Awali metode pengujian dengan _ atau jadikan sebagai komentar untuk melewatinya. XCTest juga mendukung pelewatan dengan XCTSkipIf.
func testExperimentalFeature() throws {
try XCTSkipIf(ProcessInfo.processInfo.environment["CI"] != nil, "Skip on CI")
// ... test
}Metode Pengujian Tidak Dapat Melemparkan Kesalahan (sebelum Xcode 16)
Pada Xcode versi sebelumnya, metode pengujian yang dideklarasikan sebagai throws meneruskan kesalahan sebagai kegagalan pengujian melalui XCTAssertNoThrow.
func testDecode() throws {
let user = try JSONDecoder().decode(User.self, from: validJSON)
XCTAssertEqual(user.name, "Alice")
}Menggagalkan Pengujian Secara Eksplisit
Panggil XCTFail("reason") untuk memaksa pengujian gagal dengan pesan yang menjelaskan alasannya.
func testCallback() {
var called = false
service.doWork { called = true }
if !called { XCTFail("Callback was never invoked") }
}Rencana Pengujian
Rencana Pengujian Xcode memungkinkan Anda menjalankan pengujian yang sama dengan konfigurasi berbeda (bahasa, variabel lingkungan, sanitizer).
// File → New → Test Plan
// Add test targets and configure per-configuration env vars
// Useful for running localized UI tests or with Address SanitizerPengujian Paralel
Aktifkan pengujian paralel di pengaturan skema Xcode untuk menjalankan kelas pengujian secara bersamaan dan mengurangi total waktu pengujian.
// Product → Scheme → Test → Options → Execute in parallel
// Each XCTestCase class runs in a separate process
// Ensure tests are independent and don't share global statePemeriksaan Singkat
Metode XCTestCase mana yang berjalan satu kali sebelum semua pengujian dalam kelas (bukan sebelum setiap pengujian)?
Rangkuman Pelajaran
Timpa setUp/tearDown (atau variannya yang dapat melemparkan kesalahan) untuk penyiapan/pembersihan per pengujian. Gunakan class setUp/tearDown untuk sumber daya yang disiapkan satu kali per kelas. Beri nama pengujian secara deskriptif. Gunakan addTeardownBlock untuk pembersihan langsung dan XCTSkipIf untuk pelewatan bersyarat.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Penyiapan, Pembongkaran, dan Metode Pengujian XCTestCase” gratis?
Ya — teks lengkap “Penyiapan, Pembongkaran, dan Metode Pengujian XCTestCase” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Swift Academy, upgrade ke CoddyKit PRO. Kursus Swift Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Penyiapan, Pembongkaran, dan Metode Pengujian XCTestCase”?
Menyusun class pengujian dengan setUp/tearDown dan menamai metode pengujian. Kamu berlatih Swift Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Swift Academy?
Tidak diperlukan pengalaman sebelumnya. Swift Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Penyiapan, Pembongkaran, dan Metode Pengujian XCTestCase” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Swift Academy ini?
Ya. Setiap pelajaran Swift Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Penyiapan, Pembongkaran, dan Metode Pengujian XCTestCase
- Keluarga XCTAssert dan Pernyataan yang Melempar Error
- Mocking Berbasis Protokol dan Injeksi Dependensi
- Pengujian Async dan Pengukuran Kinerja