ATUALIZAÇÃO Swift 2.x, 3.x, 4.xe 5.x
Agora você não precisa adicionar publicos métodos aos testes para então. Nas versões mais recentes do Swift, é necessário apenas adicionar a @testablepalavra - chave.
PrimeNumberModelTests.swift
import XCTest
@testable import MyProject
class PrimeNumberModelTests: XCTestCase {
let testObject = PrimeNumberModel()
}
E seus métodos internos podem manter Internal
PrimeNumberModel.swift
import Foundation
class PrimeNumberModel {
init() {
}
}
Observe que os símbolos private(e fileprivate) não estão disponíveis mesmo com o uso @testable.
Swift 1.x
Existem dois conceitos relevantes da Swift aqui (como Xcode 6 beta 6).
- Você não precisa importar classes Swift, mas precisa importar módulos externos (destinos)
- O nível de controle de acesso padrão no Swift é
Internal access
Considerando que os testes estão em outro destino, PrimeNumberModelTests.swiftvocê precisa importdo destino que contém a classe que deseja testar, se o seu destino for chamado, MyProjectserá necessário adicionar import MyProjectao PrimeNumberModelTests:
PrimeNumberModelTests.swift
import XCTest
import MyProject
class PrimeNumberModelTests: XCTestCase {
let testObject = PrimeNumberModel()
}
Mas isso não é suficiente para testar sua classe PrimeNumberModel, já que o nível padrão de Controle de Acesso é que Internal Accesssua classe não estará visível para o pacote de teste, portanto, você precisa fazer isso Public Accesse todos os métodos que deseja testar:
PrimeNumberModel.swift
import Foundation
public class PrimeNumberModel {
public init() {
}
}