Automatisieren Sie das Testen von JSL mit Hamcrest (2019-EU-45MP-061)Niveau: Fortgeschritten
Jobfunktion: Programmierer
Justin Chilton, JMP Senior Associate Test Engineer, SAS
Evan McCorkle, JMP-Softwareentwickler, SAS
Haben Sie JSL geschrieben und sind es leid, nach jeder Änderung manuell zu testen? Haben Sie versehentlich einen Teil Ihrer Bewerbung kaputt gemacht oder hat Sie die Angst davor davon abgehalten, die gewünschten Änderungen vorzunehmen? Mit automatisierten Tests können Sie sich auf Ihre Änderungen verlassen.Ab sofort ist eine Reihe von Tools zur Automatisierung des JSL-Tests verfügbar. Dieses Framework umfasst die Erstellung von Tests und Testfällen sowie eine Implementierung der bekannten Hamcrest-Assertionsbibliothek. Hamcrest bietet flexible Möglichkeiten, um zu bestätigen, was Sie über das Verhalten Ihres JSL wissen. Diese Tools verfügen über umfassende Funktionen und können auf Ihre Bedürfnisse zugeschnitten werden. Tatsächlich nutzt die JMP-Entwicklung sie sogar, um JMP selbst zu testen.Die Präsentation behandelt dieses Framework und seine Verwendung beim Testen einer JSL-Beispielanwendung, von einzelnen Funktionen bis zur Automatisierung von GUI-Interaktionen.
AusbrechenJSL-AnwendungsentwicklungBetreff: Automatisieren Sie das Testen von JSL mit Hamcrest (2019-EU-45MP-061)Hallo @Justin_Chilton , Vielen Dank für Ihre Antwort. Die Lösung, die Du als Beispiel schreibst, hatte ich bereits vor Deiner Lektüre gefunden, sodass Du mir bestätigst, dass ich auf dem richtigen Weg war. Da ich mich wieder diesem Projekt zuwende, habe ich in ein paar Tagen möglicherweise neue Fragen ... Nochmals vielen Dank für Ihre Antworten.
Betreff: Automatisieren Sie das Testen von JSL mit Hamcrest (2019-EU-45MP-061)Hallo @carole ,
Entschuldigung für die verspätete Antwort, da ich Ihre Antwort nicht gesehen habe. In diesem Szenario würde ich der Funktion „openfile“ ein optionales Argument hinzufügen, das Sie beim Testen übergeben können, um den Popup-Dialog zu vermeiden.
Nachfolgend finden Sie eine Aktualisierung Ihres Skripts, bei der Sie optionale Argumente übergeben können. Eine andere Alternative besteht darin, eine Art Flag wie „isTest“ zu verwenden, das Sie in Ihren Code einchecken können, um modale Dialoge wie diesen zu vermeiden.
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");
));Betreff: Automatisieren Sie das Testen von JSL mit Hamcrest (2019-EU-45MP-061)Entschuldigung für mein sehr einfaches Beispiel @Justin_Chilton . Ich habe versucht, mein Problem zu vereinfachen. Wie kann ich verhindern, dass ich während des folgenden Tests auf das Fenster „Datei auswählen“ klicke?
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");
));
Betreff: Automatisieren Sie das Testen von JSL mit Hamcrest (2019-EU-45MP-061)Ok, danke für die Präzision, es ist klar. Ich werde es an einer einfachen Anwendung testen. Vielleicht habe ich noch weitere Fragen...
Betreff: Automatisieren Sie das Testen von JSL mit Hamcrest (2019-EU-45MP-061)@carole , solange Sie nur Tests mit unseren vorhandenen Matchern schreiben, müssen Sie keine Klassen verwenden. Sie müssten Define Class() und Method() verwenden, wenn Sie Ihre eigenen Matcher schreiben müssten, aber wir stellen eine große Menge mit der Bibliothek bereit, sodass Sie wahrscheinlich nicht mehr benötigen.
Betreff: Automatisieren Sie das Testen von JSL mit Hamcrest (2019-EU-45MP-061)Vielen Dank @Justin_Chilton . Ich habe das Add-In natürlich gefunden, danke! Bei den Fragen frage ich mich, ob die Verwendung von Define Class( ) und Method( ) unbedingt erforderlich ist, um Hamcrest-Tests für eine Anwendung mit einer Benutzeroberfläche zu verwenden? Ich bin mit einer solchen Skriptmethode nicht vertraut ...
Betreff: Automatisieren Sie das Testen von JSL mit Hamcrest (2019-EU-45MP-061)Hallo @carole , die JMPMan-Beispiele befinden sich im Add-In, aber ich habe sie in einer ZIP-Datei hochgeladen, um den Zugriff darauf zu erleichtern. Lassen Sie mich wissen, wenn Sie Fragen haben!
Betreff: Automatisieren Sie das Testen von JSL mit Hamcrest (2019-EU-45MP-061)Hallo @Justin_Chilton , vielen Dank für die Hamcrest-Präsentation. Könnten Sie bitte das Beispiel, das Sie in Ihrer Präsentation entwickelt haben, mitteilen: JMPMan-Anwendung und JMPManGuiTests.jsl? Es sollte für mich einfacher sein, die Logik der Skripterstellung in anderen Anwendungen zu reproduzieren. Vielen Dank. Carole
Betreff: Automatisieren Sie das Testen von JSL mit Hamcrest (2019-EU-45MP-061)Danke! Ich habe das Gespräch mitverfolgt und denke, dass ihr auf dem richtigen Weg seid. Ich freue mich darauf zu sehen, was zusammengefügt wird!
Betreff: Automatisieren Sie das Testen von JSL mit Hamcrest (2019-EU-45MP-061)Hallo @nathan-clark ,
Wir haben hier diskutiert, wie ein Datentabellen-Matcher auf GitHub funktionieren könnte: https://github.com/sassoftware/jsl-hamcrest/pull/57
Ich finde @vince_faller Vielleicht arbeite ich schon an etwas.
-Justin
Betreff: Automatisieren Sie das Testen von JSL mit Hamcrest (2019-EU-45MP-061)Ich habe neulich gerade darüber nachgedacht, @vince_faller .Hast du schon eine Antwort gefunden? Ich habe über die Verwendung der Plattform „Compare Data Tables“ nachgedacht, aber keine Ausgabe gefunden, die ich in einem Komponententest verwenden könnte.
Betreff: Automatisieren Sie das Testen von JSL mit Hamcrest (2019-EU-45MP-061)Gibt es eine bewährte Methode zum Vergleichen von Datentabellen?Ich kann keinen Matcher finden.