2017-10-10 2 views
1

J'essaie actuellement d'implémenter le test de l'interface utilisateur dans mon application avec agile-snapshot. Je suis confronté à un problème que je ne comprends pas vraiment. J'ai regardé autour mais ne semble pas trouver une réponse à mon problème.Symboles non définis pour l'architecture x86_64 testant mon ViewController Swift

Mon problème se produit lorsque j'essaie d'instancier mon viewcontroller pour tenter de tester la vue qui lui est associée. La compilation échoue toujours avec ce message d'erreur.

Undefined symbols for architecture x86_64: 
"__T06medici19LoginViewControllerCMa", referenced from: 
__T013mediciUITests13LoginViewTestC4specyyFyycfU_yycfU_ in 
testUILogin.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Mon code de test ressemble à ceci:

import Nimble 
import Nimble_Snapshots 
import Quick 
import UIKit 

@testable import XXXXMyProject 

class LoginViewTest: QuickSpec { 

override func spec() { 

    describe("LoginView") { 
     var vcLogin: LoginViewController! 

     beforeEach { 
      let storyboard = UIStoryboard(name: "Account", bundle: nil) 
      vcLogin = storyboard.instantiateViewController(withIdentifier: "LoginViewController") as! LoginViewController 
      _ = vcLogin.view // To call viewDidLoad 
     } 

     it("has a valid snapshot") { 

      expect(vcLogin.view) == recordSnapshot() 
     } 
    } 
    } 
} 

être tout à fait nouveau pour les tests de l'interface utilisateur, je ne comprends pas vraiment ce qui est à l'origine de cette question. Toute aide ou conseil serait grandement apprécié sur la façon de résoudre ce problème ou d'améliorer mon code de test de l'interface utilisateur.

Merci d'avance.

Martin

+0

Vérifiez si votre contrôleur de vue est coché (coché) dans l'appartenance cible de votre test. –

+0

Voyez-vous cette erreur comme erreur de liaison? –

+0

@BadhanGanesh Cela signifie-t-il que je dois ajouter tous les fichiers de mon projet à l'appartenance cible de mon test d'interface utilisateur? Je pensais que "testable" ferait l'affaire et me donnerait accès à des éléments de mon projet. – Martin

Répondre

1

Les tests d'interface utilisateur ne peuvent pas utiliser les composants internes de votre application. Pour le tester, utilisez les tests unitaires, mais assurez-vous que l'option "Autoriser le test des API de l'application hôte" dans votre cible Tests unitaires> Général est cochée.