AKTUALIZACJA Swift 2.x, 3.x, 4.x i 5.x
Teraz nie musisz dodawać publicdo metod testowania. W nowszych wersjach Swift konieczne jest jedynie dodanie @testablesłowa kluczowego.
PrimeNumberModelTests.swift
import XCTest
@testable import MyProject
class PrimeNumberModelTests: XCTestCase {
let testObject = PrimeNumberModel()
}
A twoje wewnętrzne metody mogą się utrzymać Internal
PrimeNumberModel.swift
import Foundation
class PrimeNumberModel {
init() {
}
}
Pamiętaj, że symbole private(i fileprivate) nie są dostępne nawet przy użyciu @testable.
Swift 1.x
Istnieją dwie istotne koncepcje ze Swift (As Xcode 6 beta 6).
- Nie musisz importować klas Swift, ale musisz zaimportować zewnętrzne moduły (cele)
- Domyślny poziom kontroli dostępu w Swift to
Internal access
Biorąc pod uwagę, że testy są na innym celu PrimeNumberModelTests.swift, musisz do importcelu zawierającego klasę, którą chcesz przetestować, jeśli twój cel zostanie wywołany, MyProjectbędziesz musiał dodać import MyProjectdo PrimeNumberModelTests:
PrimeNumberModelTests.swift
import XCTest
import MyProject
class PrimeNumberModelTests: XCTestCase {
let testObject = PrimeNumberModel()
}
Ale to nie wystarczy, aby przetestować swoją klasę PrimeNumberModel, ponieważ domyślny poziom kontroli dostępu to Internal Access, Twoja klasa nie będzie widoczna dla pakietu testowego, więc musisz to zrobić Public Accessi wszystkie metody, które chcesz przetestować:
PrimeNumberModel.swift
import Foundation
public class PrimeNumberModel {
public init() {
}
}