MISE À JOUR de Swift 2.x, 3.x, 4.x et 5.x
Maintenant, vous n'avez pas besoin d'ajouter le public
aux méthodes à tester ensuite. Sur les versions plus récentes de Swift, il suffit d'ajouter l'option @testable
mot-clé.
PrimeNumberModelTests.swift
import XCTest
@testable import MyProject
class PrimeNumberModelTests: XCTestCase {
let testObject = PrimeNumberModel()
}
Et vos méthodes internes peuvent garder Internal
PrimeNumberModel.swift
import Foundation
class PrimeNumberModel {
init() {
}
}
Notez que private
(et fileprivate
) ne sont pas disponibles, même en utilisant les symboles @testable
.
Swift 1.x
Il y a deux concepts pertinents de Swift ici (comme Xcode 6 beta 6).
- Vous n'avez pas besoin d'importer des classes Swift, mais vous devez importer des modules externes (cibles).
- Le défaut Contrôle d'accès en Swift est
Internal access
Considérant que les tests sont sur une autre cible sur PrimeNumberModelTests.swift
vous devez import
la cible qui contient la classe que vous voulez tester, si votre cible s'appelle MyProject
devra ajouter import MyProject
à la PrimeNumberModelTests
:
PrimeNumberModelTests.swift
import XCTest
import MyProject
class PrimeNumberModelTests: XCTestCase {
let testObject = PrimeNumberModel()
}
Mais ce n'est pas suffisant pour tester votre classe PrimeNumberModel
puisque le niveau de contrôle d'accès par défaut est Internal Access
votre classe ne sera pas visible pour le paquet de test, donc vous devez la rendre Public Access
et toutes les méthodes que vous voulez tester :
PrimeNumberModel.swift
import Foundation
public class PrimeNumberModel {
public init() {
}
}
1 votes
Veuillez vérifier developer.apple.com/library/prerelease/ios/documentation/Swift/
2 votes
Selon la documentation d'Apple, vous n'avez pas besoin d'une importation lorsque les deux fichiers ont la même cible. Malheureusement, les tests ont une cible différente. Une solution possible serait de faire une déclaration d'importation en utilisant votreModule/PrimeNumberModel.
0 votes
@joseph.hainline Je suis confronté au même problème. Comment le résoudre ? Je suis coincé maintenant.