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