XCTest ?
iLandes
Membre
Je n'ai jamais utilisé de classe tests, je sais c'est une grave erreur. Je me suis toujours contenter de petits tests à l'intérieur de mes classes qui renvoyait la plus part du temps un message dans ma console. Il est vrai que je n'ai fait que de petites applications
Aujourd'hui je me lance mais je n'y comprend rien.
Voici le genre de test que je fais actuellement :
private let numberOfDigits = 3
private let original = 0
override func viewDidLoad() {
super.viewDidLoad()
let maxV = Int(pow(10.0,Double(numberOfDigits)) - 1)
let minV = 0
if original <= maxV && original >= minV {
let s = "\(original)"
if Int(s) == original {
print("original value is correct")
}
else {
print("original value must be an int")
}
}
else {
print("original value is not correct")
}
}
Je me demande si il serait possible de faire cela avec les classes test ? Si oui par ou commencer ?
Merci de votre aide
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Franchement, je ne sais pas, parce que je ne comprends pas ton code. Qu'est-ce qu'il est sensé faire ? (j'ai bien une idée, mais je ne trouve pas ça clair du tout).
c'est un brouillon vite fait
en gros j'ai un nombre de digit (ici 3) et un entier ici 0. Je vérifie que je peux écrire 0 sur avec 3 digit (-> oui) par contre si j'essaye avec 1000 cela me dit que la valeur est incorrect car 1000 contient 4 digits.
c'est un code que je n'utilise pas, c'est juste pour faire des essais avec des classes tests
J'aurais pu faire aussi un truc du genre. ce que je cherche c'est faire les test en dehors de ma classe dans une classe test
Ensuite, tu as deux cas de test:
Et je réponds à la spec.
Mouais, Merci Céroce
Mais je comprends toujours pas ces classes XCTests et franchement y'a pas beaucoup d'information la dessus dans les bouquins que j'ai ou sur le net...
Un bon bouquin sur le sujet.
Et un site qui traite spécifiquement du sujet.
As-tu des questions spécifiques ? Nous pouvons te donner des exemples. Personnellement, j'ai appris dans des bouquins illustrés par du code Java.
La mise en pratique est assez simple:
- on crée une classe qui hérite de XCTestCase (utiliser le template de Xcode). Pour les tests unitaires, on crée une classe de test par classe fonctionnelle; on lui donne le même nom, suffixé par "Tests".
- chaque méthode de test doit commencer par "test". Ces méthodes seront appelées à tour de rôle.
- avant chaque test, la méthode setUp est appelée
- après tout test, la méthode tearDown est appelée.
Dans une méthode de test, on utilise des assertions pour vérifier qu'on obtient bien le résultat attendu. La fonction de base est XCAssert() qui vérifie que l'expression est vraie.
- XCAssertTrue() est synonyme de XCAssert().
- XCAssertFalse() vérifie que l'expression est fausse.
- XCAssertEqual() vérifie que les deux expressions sont égales. À utiliser pour les types primitifs (scalaires, structures) ou vérifier que les deux variables pointent sur le même objet.
- XCAssertEqualObjects() vérifie que les deux objets sont égaux (en appelant la méthode isEqual:). Donc, si on veut comparer des chaà®nes ou des NSNumbers, c'est celle-là qu'il faut utiliser.
- Il y en a un tas d'autres, pour comparer des flottants ou vérifier que des exceptions sont bien levées. Les fonctions sont décrites dans la doc de Xcode.
Dans tous les cas, le dernier argument est optionnel. Il s'agit d'une chaà®ne pour expliquer quel était le résultat attendu. C'est utile trois mois plus tard pour comprendre pourquoi tu avais fait ce test.
Après, tu verras qu'il y a des choses plus ou moins difficiles à tester. En général la couche "Modèle" est facile à tester, mais la couche "contrôleur" quasiment impossible. Donc, on va tendre à vider les UIViewControllers au maximum, qui sont de toute façon ingérables autrement.