UPDATE Swift 2.x, 3.x, 4.x และ 5.x
ตอนนี้คุณไม่จำเป็นต้องเพิ่มpublicวิธีการทดสอบลงไป ใน Swift เวอร์ชันที่ใหม่กว่าจำเป็นต้องเพิ่ม@testableคำหลักเท่านั้น
PrimeNumberModelTests.swift
import XCTest
@testable import MyProject
class PrimeNumberModelTests: XCTestCase {
let testObject = PrimeNumberModel()
}
และวิธีการภายในของคุณสามารถรักษา Internal
PrimeNumberModel.swift
import Foundation
class PrimeNumberModel {
init() {
}
}
โปรดทราบว่าprivate(และfileprivate) @testableสัญลักษณ์จะไม่สามารถใช้ได้แม้จะมีการใช้
สวิฟท์ 1.x
มีแนวคิดที่เกี่ยวข้องสองประการจาก Swift ที่นี่ (ในฐานะ Xcode 6 beta 6)
- คุณไม่จำเป็นต้องนำเข้าคลาส Swift แต่คุณต้องนำเข้าโมดูลภายนอก (เป้าหมาย)
- ระดับการควบคุมการเข้าถึงเริ่มต้นใน Swift คือ
Internal access
พิจารณาว่าการทดสอบอยู่ในเป้าหมายอื่นที่PrimeNumberModelTests.swiftคุณต้องการไปimportยังเป้าหมายที่มีคลาสที่คุณต้องการทดสอบหากเป้าหมายของคุณถูกเรียกMyProjectจะต้องเพิ่มimport MyProjectไปยังPrimeNumberModelTests:
PrimeNumberModelTests.swift
import XCTest
import MyProject
class PrimeNumberModelTests: XCTestCase {
let testObject = PrimeNumberModel()
}
แต่นี่ไม่เพียงพอที่จะทดสอบคลาสของคุณPrimeNumberModelเนื่องจากระดับการควบคุมการเข้าถึงเริ่มต้นคือInternal Accessคลาสของคุณจะไม่ปรากฏให้เห็นในชุดทดสอบดังนั้นคุณจึงต้องสร้างคลาสPublic Accessและวิธีการทั้งหมดที่คุณต้องการทดสอบ:
PrimeNumberModel.swift
import Foundation
public class PrimeNumberModel {
public init() {
}
}