iOS Ajouter des méthodes de test


Exemple

Selon Apple:

Méthodes d'essai

Une méthode de test est une méthode d'instance d'une classe de test qui commence par le test de préfixe, ne prend aucun paramètre et renvoie un résultat nul, par exemple (void) testColorIsRed (). Une méthode de test exerce du code dans votre projet et, si ce code ne produit pas le résultat attendu, signale les échecs à l'aide d'un ensemble d'API d'assertion. Par exemple, la valeur de retour d'une fonction peut être comparée à une valeur attendue ou votre test peut affirmer qu'une utilisation incorrecte d'une méthode dans l'une de vos classes génère une exception.

Nous ajoutons donc une méthode de test utilisant "test" comme préfixe de la méthode, comme:

Rapide

func testSomething() {

}

Objectif c

- (void)testSomething {

}

Pour tester réellement les résultats, nous utilisons la méthode XCTAssert() , qui prend une expression booléenne et, si elle est vraie, marque le test comme réussi, sinon elle le marquera comme ayant échoué.

Disons que nous avons une méthode dans la classe View Controller appelée sum() qui calcule la somme de deux nombres. Pour le tester, nous utilisons cette méthode:

Rapide

func testSum(){
    let result = viewController.sum(4, and: 5)
    XCTAssertEqual(result, 9)
}

Objectif c

- (void)testSum {
    int result = [viewController sum:4 and:5];
    XCTAssertEqual(result, 9);
}

Remarque

Par défaut, vous ne pouvez pas accéder à l'étiquette, à la zone de texte ou à d'autres éléments d'interface utilisateur de la classe View Controller à partir de la classe de test s'ils ont été créés pour la première fois dans le fichier Storyboard. En effet, ils sont initialisés dans la méthode loadView() de la classe View Controller, et cela ne sera pas appelé lors du test. La meilleure façon d'appeler loadView() et toutes les autres méthodes requises est d'accéder à la propriété view de notre propriété viewController . Vous devez ajouter cette ligne avant de tester les éléments de l'interface utilisateur:

XCTAssertNotNil(viewController.view)