web-dev-qa-db-fra.com

Xcode 7 UI Tests, le bouton d'enregistrement est grisé

J'essaie d'ajouter des tests d'interface utilisateur à mon projet existant à l'aide de Xcode 7. Toutefois, le bouton d'enregistrement de test d'interface utilisateur est toujours grisé. Qu'est-ce qui me manque ici? 

J'ai essayé de redémarrer Xcode, de nettoyer et de reconstruire le projet et d'ajouter une nouvelle cible de test d'interface utilisateur. Est-ce que quelqu'un d'autre a le même comportement? 

25
rustylepord

FWIW: J'ai eu ce problème et il s’avère que j’essayais d’exécuter le simulateur avec le mauvais système d’exploitation. 

J'essayais d'utiliser iOS8.x et UITesting ne fonctionne que sur iOS9 +. 

Basculez la version du simulateur et le bouton d'enregistrement apparaît. 

11
Le Mot Juiced

Pour activer le bouton rouge, vous devez avoir le curseur sur la méthode de test:

 enter image description here

29
pableiros

Je suis resté coincé là-dessus pendant un moment aussi. Pour pouvoir enregistrer, vous devez appartenir à une classe reconnue par Xcode comme contenant des tests. Ajoutez un fichier à votre cible de test d'interface utilisateur avec quelque chose comme:

import Foundation
import XCTest

class MyTests: XCTestCase {
    func testSomething() {

    }
}

Enregistrez le fichier, nettoyez votre projet et passez à un autre fichier, puis revenez à celui-ci. Le bouton d'enregistrement devrait être disponible alors.

15
Maldron

J'ai eu le même problème et ma configuration était correcte, iOS> = 9.0, la cible a été ajoutée.

Le problème était l'indexation Xcode qui a pris un certain temps (environ 1h). Une fois l'indexation terminée, le bouton d'enregistrement est activé.

12
toxicsun

Avait le même problème sur Xcode 8.3. 

J'ai supprimé la méthode tearDown 

   override func tearDown() {
        super.tearDown()

    }

Comme je n'avais pas besoin de l'utiliser. Dès que je l'ai ajouté, le bouton d'enregistrement a été activé. 

5
Tal Zion

Pour moi, le problème était que le volet "Editeur de version" était ouvert. Dès que je suis retourné dans l'éditeur adjoint, cela a fonctionné.

4
Chase Holland

C'est un peu bête, mais j'ai raté certains articles que j'ai lus.

Assurez-vous que vous avez une cible UITesting, une cible de test régulière ne me l'a pas faite.

3
leopic

Vérifiez votre éditeur de version et corrigez-le 

 enter image description here

 enter image description here

2
Rajneesh071

Une méthode de test doit commencer par le mot test pour que Xcode le reconnaisse et permette l’enregistrement lorsque le curseur se trouve dans la méthode.

Une indication que Xcode a reconnu la méthode est un losange apparaissant à gauche du nom de la méthode:

 enter image description here

1
Manuel

J'ai trouvé une autre solution que je n'ai pas vue énumérée ici. 

Si vous sous-classez XCTestCase, modifiez votre classe pour qu'elle en hérite à nouveau, enregistrez le fichier , remettez-le à votre nom de sous-classe. Pas de nettoyage ou de construction nécessaire.

Pour mon projet, j'ai une sous-classe de XCTestCase, appelons-le APPMyTestCase. Je constate souvent que le bouton d'enregistrement est grisé et que les petits boutons verts/rouges situés à côté de chaque méthode de test n'apparaissent pas non plus pour ne pas pouvoir les exécuter individuellement. Si je modifie ma sous-classe à XCTestCase pendant une seconde, tout fonctionne à nouveau. 

Change ça:

class APPLoadingPageUITests: APPMyTestCase {
    // tests here
}

Pour ça:

class APPLoadingPageUITests: XCTestCase {
    // tests here
}

Et puis revenons à ceci:

class APPLoadingPageUITests: APPMyTestCase {
    // tests here
}

Cela a résolu le problème pour moi.

1
Gordonium

J'ai fait quelques choses pour activer mon bouton d'enregistrement:

  1. (Facultatif, recommandé) - Supprimez tous les schémas TEST et les cibles TEST de votre projet, recommencez à zéro en créant une nouvelle cible UITest.
  2. Assurez-vous que votre schéma UITest et votre schéma d'exécution principal du projet pointent sur la même cible.
  3. Essayez de supprimer vos autres schémas UITest s’ils peuvent être facilement recréés/n’ont pas une importance absolue.
  4. Produit> (maintenez la touche Alt enfoncée)> Dossier de génération propre
  5. Produit> Propre (juste pour une mesure de sécurité)
  6. Fermez le projet, quittez Xcode.
  7. Quittez le simulateur.
  8. Enfin, rouvrez Xcode, chargez votre projet. Accédez à votre fichier UITest et le petit bouton rouge de joie devrait être disponible. 

Assurez-vous également que votre cible de génération/exécution est définie sur iPhone X 9.X.

1
Frogger

Assurez-vous de n'avoir qu'une seule sous-classe de XCTestCase par fichier. Vous voulez que le nom de fichier et les noms de classe correspondent.

D'après mon expérience, même lorsque les tests d'interface utilisateur fonctionnent, si vous ajoutez une nouvelle sous-classe de votre sous-classe XCTestCase dans le même fichier, le bouton d'enregistrement sera désactivé (bien que toutes les autres interfaces de test continuent de fonctionner).

0
blackp

Il est immédiatement revenu quand je suis passé au bon schéma. Assurez-vous que vous êtes sur le schéma UI testing, car l'enregistreur de test d'interface utilisateur ne peut fonctionner sur aucun autre.

0
Wills

Aussi bête que cela puisse paraître, je devais sélectionner un autre fichier dans la barre latérale à gauche et revenir à mon fichier avec les scénarios de test. Après cela, le bouton est immédiatement devenu actif.

0
Tamás Sengel