web-dev-qa-db-fra.com

Le test Xcode ne détecte pas ma classe

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"

22
Imran Shamszadeh

@testable import MyApp devrait fonctionner correctement. N'oubliez pas de définir les configurations appropriées dans Debug pour votre cible UITest.

enter image description here

20

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

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.

15
Mark Szymczyk

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.

7
ivyr

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à.

7
Manu

Ajoutez simplement la classe que vous testez Cible -> ConstruirePhases -> Compiler les sources

0
AmirHossein

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.

0
Firda Sahidi