2017-05-28 1 views
0

J'apprends iOS et j'ai maintenant un problème à créer un UITest pour une application. Le code, collé ci-dessous, compilera si je supprime le var viewController: ViewController! champ, mais échoue lorsque je l'ajoute. Lorsque je clique sur le message d'erreur, cela m'amène à la partie «Construire les phases» du projet PasswordManagerUITests. J'ai inclus les captures d'écran de l'erreur et les phases de construction pour le projet ci-dessous.clang: erreur: la commande de l'éditeur de liens a échoué avec le code de sortie 1 (utilisez -v pour voir l'invocation); "__TMaC15PasswordManager14ViewController", référencé par:

import XCTest 

@testable import PasswordManager 

class ViewControllerTestCase: XCTestCase { 

var viewController: ViewController! 

override func setUp() { 
    super.setUp() 
} 

override func tearDown() { 
    // Put teardown code here. This method is called after the invocation of each test method in the class. 
    super.tearDown() 
} 

func testExample() { 
    // Use recording to get started writing UI tests. 
    // Use XCTAssert and related functions to verify your tests produce the correct results. 
} 

} enter image description here

enter image description here

Répondre

0

C'est parce que ViewController (il est une classe au sein PasswordManager, non?) Ne sont pas disponibles au niveau de test de l'interface utilisateur. Et ça ne devrait pas être. Vous n'avez pas besoin de @testable import PasswordManager dans le test d'interface utilisateur. Dans le test de l'interface utilisateur, vous testez les éléments de l'interface utilisateur (XCUIElement objets) uniquement les classes de l'application elle-même.

Si vous souhaitez tester vos classes d'applications, vous devez écrire un test d'unité et non un test d'interface utilisateur.