ОБНОВЛЕНИЕ 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.
Swift 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() {
}
}