Suite à la mise en
place du template de projet pour les tests, cela implique quelques
modifications dans l'écriture des tests automatisés, voici donc les principaux
changements.
Pour rappel:
l'architecture du template qui a été mis en place à partir du précédent post
est la suivante:
Couverture d'un nouvel ensemble fonctionnel
Nous allons créer un
fichier ui test Map pour chaque ensemble fonctionnel.
A chaque ajout de
fichier UI test Map, il faut impérativement penser à ajouter les propriétés dans le TestRunner
Héritage de la classe de base
L'héritage de cette
classe de base va nous permettre de récupérer tout le contexte et les
constructeurs de base du projet de test
Appel des actions
des différents Ui test map depuis les tests
TestRunner.Navigation.Click_MonAction();
Factorisation de code
Afin d'éviter de
réécrire systématiquement les mêmes actions, lorsque nous avons des
enchainement d'actions qui sont réutilisées à plusieurs reprise, nous avons
tout intérêt à factoriser ce code.
Nous avons alors 2
possibilités:
- Si la fonction factorisée est utilisée dans toute l'application (ex: ouverture navigateur puis logue de l'utilisateur), la fonction devra alors être factorisée dans la classe "CodedUiTestCommons"
Appel
d'une fonction commune à toute l'application:
CodedUiTestCommons.NomFonction();
- Si la fonction factorisée est utilisée uniquement dans un ensemble fonctionnel, nous créerons alors une classe "Common" dans l'ensemble fonctionnel approprié et la fonction devra alors être factorisée dans cette classe.
Dans
le cas ou nous créons une classe "Common" dans un ensemble
fonctionnel, il y a deux étapes à ne pas oublier:
- Notre classe Test1 n'héritera pas de la classe CodedUiTestBase mais de la classe "Common" que nous venons de créer, et la classe "Common" devra elle-même hériter de la classe CodedUiTestBase .
- Passer le contexte en paramètre:
exemple
de déclaration de fonction dans "Common": public static void
Ma_Fonction(CodedUiTestBase instance)
Appel
de la fonction dans le test: common.Ma_Fonction(this);
Conclusion
Le projet est
maintenant en place et simplement utilisable, nous verrons maintenant dans des
prochains post comment optimiser le code pour améliorer les performances et la
maintenabilité.
Aucun commentaire:
Enregistrer un commentaire