J'ai une classe nommée Meal.Swift dans mon projet et un test unitaire
func testMealInitialization() {
// Success case.
let potentialItem = Meal(name: "Newest meal", photo: nil, rating: 5)
XCTAssertNotNil(potentialItem)
// Failure cases.
let noName = Meal(name: "", photo: nil, rating: 0)
XCTAssertNil(noName, "Empty name is invalid")
}
Mais le problème est que: tilisation de l'identifiant non résolu "Repas"
Xcode 7 ajoute le @testable import
instruction pour simplifier les tests utilisateur. En haut de vos fichiers de classe de test unitaire, ajoutez l'instruction suivante:
@testable import MyApp
Où MyApp est le nom de votre application iOS. Désormais, la cible des tests unitaires devrait pouvoir trouver les classes dans votre application et exécuter les tests. Si vous obtenez des erreurs de lien indiquant que Xcode ne trouve pas vos classes d'application, assurez-vous que la valeur du paramètre de génération Nom du module de produit correspond au nom que vous utilisez dans le @testable import
instruction, MyApp dans cet exemple.
Si @testable import
ne fonctionne pas pour vous, une solution consiste à faire de vos classes d'application des membres de la cible de test unitaire. Vous pouvez définir l'appartenance cible d'un fichier dans Xcode à l'aide de l'inspecteur de fichiers.
J'ai également rencontré ce problème, ce qui a fonctionné pour moi est de recharger mon fichier de test et de retaper le
@testable import FoodTracker
puis à ce stade, il a détecté mes classes FoodTracker (classe Meal) et les erreurs ont disparu.
Cliquez sur votre cours de repas. Ensuite, sur le côté droit, vous verrez la section "Adhésion cible". Sélectionnez votre projet de test. (Xcode 7) Voilà.
Ajoutez simplement la classe que vous testez Cible -> ConstruirePhases -> Compiler les sources
Dans mon cas, je n'ai eu d'erreur que dans la nouvelle classe que je viens de créer, et cela me rend confus. Donc, cela fonctionne en sélectionnant Test unitaire cible sous appartenance à la classe de ma nouvelle classe. Ou supprimez la classe, créez une nouvelle classe, puis sélectionnez Target Test Unit dans cette nouvelle classe.