Swift Academy · บทเรียน

การตั้งค่า การล้างข้อมูล และเมธอดการทดสอบของ XCTestCase

จัดโครงสร้างคลาสการทดสอบด้วย setUp/tearDown และตั้งชื่อเมธอดการทดสอบ

บทเรียน 1 จาก 413 ขั้นตอน

การตั้งค่า การล้างข้อมูล และเมธอดการทดสอบของ XCTestCase เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน

พื้นฐาน XCTestCase

XCTestCase เป็นคลาสฐานสำหรับการทดสอบหน่วยของ Swift ทั้งหมด เมธอดแต่ละเมธอดที่ขึ้นต้นด้วยคำนำหน้าสำหรับการทดสอบจะเป็นกรณีการทดสอบหนึ่งกรณี

import XCTest

final class MathTests: XCTestCase {
  func testAddition() {
    XCTAssertEqual(2 + 2, 4)
  }
}

setUp และ tearDown

setUp() ทำงานก่อนการทดสอบแต่ละครั้ง ส่วน tearDown() ทำงานหลังการทดสอบแต่ละครั้ง ใช้เมธอดเหล่านี้เพื่อเริ่มต้นสถานะร่วมและล้างข้อมูล

final class UserServiceTests: XCTestCase {
  var sut: UserService!
  override func setUp() {
    super.setUp()
    sut = UserService()
  }
  override func tearDown() {
    sut = nil
    super.tearDown()
  }
}

setUpWithError และ tearDownWithError

รูปแบบของ setUp/tearDown ที่สามารถโยนข้อผิดพลาดได้: หากการตั้งค่าโยนข้อผิดพลาด การทดสอบจะถูกทำเครื่องหมายว่าล้มเหลวโดยอัตโนมัติ

override func setUpWithError() throws {
  sut = try UserService(config: loadTestConfig())
}
override func tearDownWithError() throws {
  try sut.cleanup()
}

การตั้งค่าระดับคลาส

class setUp() และ class tearDown() ทำงานครั้งเดียวก่อนหรือหลังการทดสอบทั้งหมดในคลาส เหมาะสำหรับทรัพยากรร่วมที่ใช้เวลาจัดเตรียมนาน

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()
  }
}

การตั้งชื่อเมธอดการทดสอบ

ตั้งชื่อการทดสอบเป็น test_methodName_condition_expectedResult เพื่อให้อ่านง่ายและได้ข้อความแจ้งความล้มเหลวที่ชัดเจน

func test_login_withValidCredentials_returnsUser() throws { ... }
func test_login_withInvalidPassword_throwsUnauthorized() throws { ... }

addTeardownBlock

ลงทะเบียนบล็อกล้างข้อมูลต่อการทดสอบแบบแทรกในจุดนั้น โดยไม่ต้องเขียนทับ tearDown

func testCreateFile() throws {
  let url = FileManager.default.temporaryDirectory.appendingPathComponent("test.txt")
  addTeardownBlock { try? FileManager.default.removeItem(at: url) }
  // ... test
}

การปิดใช้งานการทดสอบ

เติม _ หน้าเมธอดการทดสอบ หรือใส่คอมเมนต์ครอบเมธอดเพื่อข้ามการทดสอบนั้น XCTest ยังรองรับการข้ามด้วย XCTSkipIf

func testExperimentalFeature() throws {
  try XCTSkipIf(ProcessInfo.processInfo.environment["CI"] != nil, "Skip on CI")
  // ... test
}

เมธอดการทดสอบไม่สามารถโยนข้อผิดพลาดได้ (ก่อน Xcode 16)

ใน Xcode รุ่นก่อนหน้า เมธอดการทดสอบที่ประกาศเป็น throws จะส่งต่อข้อผิดพลาดให้กลายเป็นความล้มเหลวของการทดสอบผ่านทาง XCTAssertNoThrow

func testDecode() throws {
  let user = try JSONDecoder().decode(User.self, from: validJSON)
  XCTAssertEqual(user.name, "Alice")
}

การทำให้การทดสอบล้มเหลวโดยชัดเจน

เรียกใช้ XCTFail("reason") เพื่อบังคับให้การทดสอบล้มเหลวพร้อมข้อความอธิบาย

func testCallback() {
  var called = false
  service.doWork { called = true }
  if !called { XCTFail("Callback was never invoked") }
}

แผนการทดสอบ

แผนการทดสอบของ Xcode ช่วยให้คุณเรียกใช้การทดสอบชุดเดิมด้วยการกำหนดค่าต่างกัน เช่น ภาษา ตัวแปรสภาพแวดล้อม และเครื่องมือตรวจหาปัญหา

// File → New → Test Plan
// Add test targets and configure per-configuration env vars
// Useful for running localized UI tests or with Address Sanitizer

การทดสอบแบบขนาน

เปิดใช้การทดสอบแบบขนานในการตั้งค่าโครงร่างของ Xcode เพื่อให้คลาสการทดสอบทำงานพร้อมกันและลดเวลาการทดสอบทั้งหมด

// Product → Scheme → Test → Options → Execute in parallel
// Each XCTestCase class runs in a separate process
// Ensure tests are independent and don't share global state

ตรวจสอบอย่างรวดเร็ว

เมธอดใดของ XCTestCase ที่ทำงานครั้งเดียวก่อนการทดสอบทั้งหมดในคลาส ไม่ใช่ก่อนการทดสอบแต่ละรายการ

สรุปบทเรียน

เขียนทับ setUp/tearDown หรือรูปแบบที่โยนข้อผิดพลาดได้ เพื่อเตรียมและล้างข้อมูลต่อการทดสอบ ใช้ class setUp/tearDown สำหรับทรัพยากรที่ต้องเตรียมครั้งเดียวต่อคลาส ตั้งชื่อการทดสอบให้สื่อความหมาย ใช้ addTeardownBlock สำหรับการล้างข้อมูลแบบแทรกในจุดนั้น และใช้ XCTSkipIf เพื่อข้ามตามเงื่อนไข

เริ่มต้นได้ฟรี

เรียนรู้ Swift ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
122
บทเรียน
409

คำถามที่พบบ่อย

บทเรียน “การตั้งค่า การล้างข้อมูล และเมธอดการทดสอบของ XCTestCase” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การตั้งค่า การล้างข้อมูล และเมธอดการทดสอบของ XCTestCase” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การตั้งค่า การล้างข้อมูล และเมธอดการทดสอบของ XCTestCase”

จัดโครงสร้างคลาสการทดสอบด้วย setUp/tearDown และตั้งชื่อเมธอดการทดสอบ คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “การตั้งค่า การล้างข้อมูล และเมธอดการทดสอบของ XCTestCase” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม

ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การตั้งค่า การล้างข้อมูล และเมธอดการทดสอบของ XCTestCase
  2. กลุ่มคำยืนยัน XCTAssert และคำยืนยันที่โยนข้อผิดพลาด
  3. การจำลองตามโพรโทคอลและการฉีกการพึ่งพา
  4. การทดสอบแบบอะซิงโครนัสและการวัดประสิทธิภาพ
← กลับไปที่ Swift Academy