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