1

J'utilise XCode 8 et XCTestCase. J'ai créé une fonction class setUp à exécuter une fois avant tous les tests, et l'autre setUp à être exécuté avant chaque test.XCTestCase ne lance pas l'application dans la méthode de classe setUp

Je souhaite que l'application soit lancée une fois avant tous les scénarios de test. Si j'utilise le lancement dans la classe setUp, il ne sera jamais exécuté. Si j'utilise le lancement dans le setUp qui est exécuté avant chaque test, il lance le test.

enter image description here

Il imprime:

EN CLASSE SETUP

FIN DE CLASSE SETUP

IN SETUP

EN MÉTHODE D'ESSAI

Mais l'application n'est jamais lancé. Si je décommente la ligne pour lancer l'application dans le second setUp, elle sera lancée.

Comment puis-je lancer l'application une fois avant tous les tests de ma classe de test?

Répondre

1

Je face à la même question et a résolu le problème de la manière suivante

class MyTestCase: XCTestCase { 

    static var app: XCUIApplication? 

    override func setUp() { 
     super.setUp() 

     if MyTestCase.app == nil { 
      MyTestCase.app = XCUIApplication() 
      MyTestCase.app!.launch() 
     } 
    } 

    // Tests... 
} 

Cela ne lancer l'application à la première fois la méthode setUp est appelée.

+1

Merci! Cette solution de contournement fonctionne pour moi. Toujours curieux de savoir pourquoi cela ne fonctionne pas dans la fonction de classe que Apple fournit pour l'installation globale si. Mais cela fonctionnera jusque-là! Merci beaucoup! – rfodge