Je viens d'apprendre récemment nit Testing in Xcode . Maintenant, j'essaie Xcode 7 et je vois qu'il y a un nouveau groupe pour les tests d'interface lorsque je crée un nouveau projet.
J'ai regardé la vidéo WWDC 2015 et c'était plutôt bien, mais avez-vous un exemple super simple que je pourrais passer par moi-même? Les exemples vidéo étaient un peu trop complexes pour moi.
Notes
Utilisez Tests unitaires pour tester la validité des méthodes dans vos classes. Vous les utilisez pour tester le code que vous avez écrit. (Voir mon autre exemple pour configurer un test unitaire simple dans Xcode.)
Utilisez Tests d'interface utilisateur pour vérifier la validité de l'interface utilisateur. Pensez-y comme avoir votre propre robot pour passer et faire toutes les interactions normales avec votre application qu'un utilisateur normal ferait. Cela vous fait gagner du temps de le faire vous-même.
Au moment d'écrire ces lignes, il est difficile d'accéder à de nombreuses propriétés des composants de l'interface utilisateur, mais le simple fait de passer un test en les touchant et en les balayant confirme qu'ils sont là.
Il s'agit de la configuration et du test d'interface utilisateur les plus simples auxquels je pouvais penser: un bouton qui, une fois enfoncé, modifie le texte d'une étiquette.
Si vous ajoutez des tests d'interface utilisateur à un projet créé avant Xcode 7, voir cette réponse . (Fichier> Nouveau> Cible> Test> Bundle de tests Cocoa Touch UI)
Ajoutez un UILabel
et un UIButton
au storyboard
Créez un @IBOutlet et @IBAction dans ViewController
et modifiez le texte label
lorsque vous appuyez sur button
.
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var label: UILabel!
@IBAction func button(sender: AnyObject) {
label.text = "Hello"
}
}
testExample()
. (Vous pouvez supprimer les commentaires)Dans l'application, (1) appuyez sur l'étiquette, (2) appuyez sur le bouton, puis (3) appuyez à nouveau sur l'étiquette. (4) Appuyez à nouveau sur le bouton Enregistrer pour arrêter l'enregistrement. Le code suivant aurait dû être généré automatiquement pour vous:
func testExample() {
let app = XCUIApplication()
app.staticTexts["Label"].tap()
app.buttons["Button"].tap()
app.staticTexts["Hello"].tap()
}
Utilisez les lignes staticText
comme point de départ pour créer un XCTAssert
. Vous devriez maintenant avoir:
func testExample() {
let app = XCUIApplication()
XCTAssert(app.staticTexts["Label"].exists)
app.buttons["Button"].tap()
XCTAssert(app.staticTexts["Hello"].exists)
}
Appuyez sur le losange sur la gauche pour exécuter le test d'interface utilisateur. Il devrait devenir vert quand il passe.
UIButton
et UILabel
existent et que le texte de l'étiquette a changé. Si vous voulez le voir échouer (une bonne idée), vous pouvez remplacer "Bonjour" par autre chose.@ Suragch +1 pour la réponse. Une chose que j'ai observée et que je veux partager, c'est que chaque fonction à l'intérieur du scénario de test de l'interface utilisateur doit commencer par "test". Vous pouvez ajouter un nom supplémentaire après cela. Ce n'est qu'ainsi que le bouton (pour cliquer pour démarrer le test) apparaît.