Automatisez les tests de JSL à l'aide de Hamcrest ( 2019-EU-45MP-061 )Niveau : Avancé
Fonction du poste : Programmeur
Justin Chilton, ingénieur de test associé senior chez JMP, SAS
Evan McCorkle, développeur de logiciels JMP, SAS
Avez-vous écrit du JSL et en avez-vous assez de tester manuellement après chaque modification ? Avez-vous accidentellement cassé une partie de votre candidature, ou la peur de le faire vous a-t-elle empêché d'apporter les modifications souhaitées ? Grâce aux tests automatisés, vous pouvez être plus confiant dans vos modifications.Un ensemble d'outils permettant d'automatiser les tests de JSL est désormais disponible. Ce framework comprend la création de tests et de cas de tests, ainsi qu'une implémentation de la célèbre bibliothèque d'assertions Hamcrest. Hamcrest propose des moyens flexibles d'affirmer ce que vous savez être vrai sur le comportement de votre JSL. Ces outils sont complets et peuvent être spécialisés selon vos besoins. En fait, le développement JMP les utilise même pour tester JMP lui-même.La présentation couvrira ce cadre et son utilisation pour tester un exemple d'application JSL, des fonctions individuelles à l'automatisation des interactions GUI.
ÉclaterDéveloppement d'applications JSLRe : Automatiser les tests de JSL à l'aide de Hamcrest (2019-EU-45MP-061)Salut @Justin_Chilton , Merci pour votre réponse. J'avais trouvé la solution que vous écrivez en exemple avant de vous lire, vous me confirmez donc que j'étais sur la bonne voie. Puisque je reviens sur ce projet j'aurai peut-être de nouvelles questions dans quelques jours... Merci encore pour vos réponses.
Re : Automatiser les tests de JSL à l'aide de Hamcrest (2019-EU-45MP-061)Salut @carole ,
Désolé pour la réponse tardive, car je n'avais pas vu votre réponse. Dans ce scénario, j'ajouterais un argument facultatif à la fonction « openfile » que vous pourriez transmettre lors du test pour éviter d'avoir besoin de la boîte de dialogue contextuelle.
Vous trouverez ci-dessous une mise à jour de votre script dans laquelle vous pouvez transmettre des arguments facultatifs. Une autre alternative consiste à avoir une sorte d'indicateur comme « isTest » que vous pouvez archiver dans votre code pour éviter les boîtes de dialogue modales comme celle-ci.
openfile = function ( {path = Empty()},
strPathOpen = If(IsEmpty(path),
PickFile("Select the Data Set Table","$SAMPLE_DATA",{"JMP DATA TABLE|JMP"}),
path
);
If(strPathOpen != "", Open(strPathOpen), Empty());
);
ut test("Pickfileok", "Open Big Class File", Expr(
dt = openfile("$SAMPLE_DATA/Big Class.jmp");
ut assert that(Expr(dt), ut n col(5), "opened table should have 5 columns");
));Re : Automatiser les tests de JSL à l'aide de Hamcrest (2019-EU-45MP-061)Désolé pour mon exemple très simple @Justin_Chilton . J'ai essayé de simplifier mon problème. Comment puis-je faire pour éviter de cliquer sur la fenêtre de sélection de fichier lors du test suivant s'il vous plaît ?
openfile = function ( {},
strPathOpen = PickFile("Select the Data Set Table","$SAMPLE_DATA",{"JMP DATA TABLE|JMP"});
return(strPathOpen)
);
ut test("Pickfileok", "Open Big Class File", Expr(
ut assert that(Expr(openfile()), "/C:/Program Files/SAS/JMP/15/Samples/Data/Big Class.jmp");
));
Re : Automatiser les tests de JSL à l'aide de Hamcrest (2019-EU-45MP-061)Ok merci pour la précision c'est clair. Je vais le tester sur une application simple. J'aurai peut-être d'autres questions...
Re : Automatiser les tests de JSL à l'aide de Hamcrest (2019-EU-45MP-061)@carole , tant que vous écrivez uniquement des tests avec nos correspondants existants, vous n'avez pas besoin d'utiliser de classes. Vous devrez utiliser Define Class() et Method() si vous devez écrire vos propres matchers, mais nous en fournissons une grande quantité avec la bibliothèque, vous n'en aurez donc probablement pas besoin de plus.
Re : Automatiser les tests de JSL à l'aide de Hamcrest (2019-EU-45MP-061)Merci beaucoup @Justin_Chilton . J'ai trouvé le complément bien sûr merci ! Pour les questions, je me demande si l'utilisation de Define Class( ) et Method( ) est indispensable pour utiliser les tests hamcrest pour une application avec une UI ? Je ne connais pas une telle méthode de script...
Re : Automatiser les tests de JSL à l'aide de Hamcrest (2019-EU-45MP-061)Salut @carole , les exemples JMPMan se trouvent dans le complément, mais je les ai téléchargés dans un fichier zip pour en faciliter l'accès. Faites moi savoir si vous avez des questions!
Re : Automatiser les tests de JSL à l'aide de Hamcrest (2019-EU-45MP-061)Salut @Justin_Chilton , merci pour la présentation du hamcrest. Pourriez-vous s'il vous plaît partager l'exemple que vous avez développé dans votre présentation : application JMPMan et JMPManGuiTests.jsl ? Il devrait être plus facile pour moi de reproduire la logique des scripts dans d'autres applications. Merci beaucoup. Carole
Re : Automatiser les tests de JSL à l'aide de Hamcrest (2019-EU-45MP-061)Merci! J'ai rattrapé la conversation et je pense que vous êtes sur la bonne voie. J'ai hâte de voir ce qui sera fusionné !
Re : Automatiser les tests de JSL à l'aide de Hamcrest (2019-EU-45MP-061)Salut @nathan-clark ,
Nous avons discuté ici de la manière dont un comparateur de tables de données pourrait fonctionner sur GitHub : https://github.com/sassoftware/jsl-hamcrest/pull/57
Je pense @vince_faller je travaille peut-être déjà sur quelque chose.
-Justin
Re : Automatiser les tests de JSL à l'aide de Hamcrest (2019-EU-45MP-061)J'y pensais justement l'autre jour, @vince_faller .Avez-vous déjà trouvé une réponse ? J'envisageais d'utiliser la plateforme Compare Data Tables, mais je n'ai pas vu de résultat que je pourrais utiliser dans un test unitaire.
Re : Automatiser les tests de JSL à l'aide de Hamcrest (2019-EU-45MP-061)Existe-t-il une bonne pratique pour comparer les tableaux de données ?Je ne trouve aucun correspondant.