การตั้งค่า การล้างข้อมูล และเมธอดการทดสอบของ XCTestCase
จัดโครงสร้างคลาสการทดสอบด้วย setUp/tearDown และตั้งชื่อเมธอดการทดสอบ
การตั้งค่า การล้างข้อมูล และเมธอดการทดสอบของ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การตั้งค่า การล้างข้อมูล และเมธอดการทดสอบของ XCTestCase
- กลุ่มคำยืนยัน XCTAssert และคำยืนยันที่โยนข้อผิดพลาด
- การจำลองตามโพรโทคอลและการฉีกการพึ่งพา
- การทดสอบแบบอะซิงโครนัสและการวัดประสิทธิภาพ