Automatizza il test di JSL utilizzando Hamcrest (2019-EU-45MP-061)Livello: Avanzato
Funzione lavorativa: programmatore
Justin Chilton, ingegnere di test associato senior JMP, SAS
Evan McCorkle, sviluppatore software JMP, SAS
Hai scritto del JSL e ti sei stancato di testare manualmente dopo ogni modifica? Hai inavvertitamente rotto qualche parte della tua domanda, o la paura di farlo ti ha impedito di apportare le modifiche che desideri apportare? Con i test automatizzati, puoi essere più sicuro delle modifiche apportate.Ora è disponibile un insieme di strumenti per automatizzare il test di JSL. Questo framework include la creazione di test e casi di test, nonché un'implementazione della nota libreria di asserzioni Hamcrest. Hamcrest fornisce modi flessibili per affermare ciò che sai essere vero riguardo al comportamento del tuo JSL. Questi strumenti sono completi di funzionalità e possono essere specializzati per le tue esigenze. In effetti, lo sviluppo di JMP li utilizza anche per testare JMP stesso.La presentazione riguarderà questo framework e il suo utilizzo nel testare un'applicazione JSL di esempio, dalle singole funzioni all'automazione delle interazioni della GUI.
ScoppiareSviluppo di applicazioni JSLRe: Automatizzare il test di JSL utilizzando Hamcrest (2019-EU-45MP-061)CIAO @Justin_Chilton , La ringrazio per la risposta. Avevo trovato la soluzione che scrivi come esempio prima di leggerti, quindi mi confermi che ero sulla strada giusta. Dato che sto tornando a questo progetto, potrei avere nuove domande tra qualche giorno... Grazie ancora per le tue risposte
Re: Automatizzare il test di JSL utilizzando Hamcrest (2019-EU-45MP-061)CIAO @carole ,
Mi scuso per il ritardo nella risposta perché non avevo visto la tua risposta. In questo scenario, aggiungerei un argomento facoltativo alla funzione 'openfile' che potresti passare durante il test per evitare la necessità della finestra di dialogo popup.
Di seguito è riportato un aggiornamento del tuo script in cui puoi passare argomenti opzionali. Un'altra alternativa è avere una sorta di flag come "isTest" che puoi controllare nel tuo codice per evitare finestre di dialogo modali come questa.
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: Automatizzare il test di JSL utilizzando Hamcrest (2019-EU-45MP-061)Ci scusiamo per il mio esempio molto semplice @Justin_Chilton . Ho provato a semplificare il mio problema. Come posso fare per evitare di fare clic sulla finestra di prelievo del file durante il test successivo, per favore?
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: Automatizzare il test di JSL utilizzando Hamcrest (2019-EU-45MP-061)Ok grazie per la precisione è chiaro. Lo proverò su una semplice applicazione. Magari avrei altre domande...
Re: Automatizzare il test di JSL utilizzando Hamcrest (2019-EU-45MP-061)@carole , finché scrivi solo test con i nostri matcher esistenti, non è necessario utilizzare le classi. Dovresti utilizzare Define Class() e Method() se avessi bisogno di scrivere i tuoi matcher, ma ne forniamo una grande quantità con la libreria, quindi probabilmente non ti serviranno altri.
Re: Automatizzare il test di JSL utilizzando Hamcrest (2019-EU-45MP-061)Grazie mille @Justin_Chilton . L'ho trovato nel componente aggiuntivo ovviamente, grazie! Per le domande, mi chiedo se l'utilizzo di Define Class() e Method() sia essenziale per utilizzare i test hamcrest per un'applicazione con un'interfaccia utente? Non ho familiarità con questo metodo di scripting...
Re: Automatizzare il test di JSL utilizzando Hamcrest (2019-EU-45MP-061)CIAO @carole , gli esempi JMPMan si trovano nel componente aggiuntivo, ma li ho caricati in un file zip per facilitarne l'accesso. Fatemi sapere se avete domande!
Re: Automatizzare il test di JSL utilizzando Hamcrest (2019-EU-45MP-061)CIAO @Justin_Chilton , grazie per la presentazione di Hamcrest. Potresti condividere l'esempio che hai sviluppato nella tua presentazione: applicazione JMPMan e JMPManGuiTests.jsl? Dovrebbe essere più semplice per me riprodurre la logica dello scripting in altre applicazioni. Molte grazie. Carola
Re: Automatizzare il test di JSL utilizzando Hamcrest (2019-EU-45MP-061)Grazie! Ho seguito la conversazione e penso che voi ragazzi siate sulla strada giusta. Non vedo l'ora di vedere cosa verrà incorporato!
Re: Automatizzare il test di JSL utilizzando Hamcrest (2019-EU-45MP-061)CIAO @nathan-clark ,
Abbiamo discusso di come un abbinamento di tabelle dati potrebbe funzionare su GitHub qui: https://github.com/sassoftware/jsl-hamcrest/pull/57
Penso @vince_faller potrebbe già lavorare su qualcosa.
-Giustino
Re: Automatizzare il test di JSL utilizzando Hamcrest (2019-EU-45MP-061)Ci stavo pensando proprio l'altro giorno, @vince_faller .Hai già trovato una risposta? Stavo valutando l'utilizzo della piattaforma Confronta tabelle dati, ma non ho visto un output che potessi utilizzare in un test unitario.
Re: Automatizzare il test di JSL utilizzando Hamcrest (2019-EU-45MP-061)Esiste una procedura consigliata per confrontare le tabelle di dati?Non c'è un corrispondente che riesco a trovare.