使用 Hamcrest 自動化 JSL 測試 (2019-EU-45MP-061)級別:高級
工作職能:程序員
Justin Chilton,JMP 高級副測試工程師,SAS
Evan McCorkle,SAS JMP 軟件開發人員
您是否編寫過一些 JSL,卻厭倦了在每次更改後進行手動測試? 您是否無意中破壞了應用程序的某些部分,或者擔心這樣做而導致您無法進行想要的更改? 通過自動化測試,您可以對自己的更改更有信心。現在可以使用一組用於自動化 JSL 測試的工具。 該框架包括測試和測試用例的創建,以及著名的 Hamcrest 斷言庫的實現。 Hamcrest 提供了靈活的方法來斷言您所知道的 JSL 行為的真實性。 這些工具功能齊全,可以專門滿足您的需求。 事實上,JMP 開發甚至使用它們來測試 JMP 本身。該演示將涵蓋該框架及其在測試示例 JSL 應用程序中的使用,從單個功能到 GUI 交互的自動化。
爆發JSL應用程序開發回复:使用 Hamcrest 自動化 JSL 測試 (2019-EU-45MP-061)你好@Justin_Chilton , 謝謝您的回答。 在閱讀您之前,我已經找到了您作為示例編寫的解決方案,因此您向我確認我的方法是正確的。 由於我要回到這個項目,幾天后我可能會遇到新問題...... 再次感謝您的回答。
回复:使用 Hamcrest 自動化 JSL 測試 (2019-EU-45MP-061)你好@卡羅爾,
對於延遲回复表示歉意,因為我沒有看到您的回复。 在這種情況下,我將向“openfile”函數添加一個可選參數,您可以在測試時傳入該參數,以避免需要彈出對話框。
下面是對腳本的更新,您可以在其中傳遞可選參數。 另一種選擇是使用某種標誌,例如“isTest”,您可以檢查代碼以避免出現這樣的模式對話框。
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");
));回复:使用 Hamcrest 自動化 JSL 測試 (2019-EU-45MP-061)抱歉我的例子很簡單@Justin_Chilton 。 我試圖簡化我的問題。 請問在下面的測試中如何避免點擊選擇文件窗口?
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");
));
回复:使用 Hamcrest 自動化 JSL 測試 (2019-EU-45MP-061)好的,謝謝你的精確性,很清楚。 我將在一個簡單的應用程序上測試它。 也許我還會有一些其他問題...
回复:使用 Hamcrest 自動化 JSL 測試 (2019-EU-45MP-061)@卡羅爾,只要您只使用我們現有的匹配器編寫測試,就不需要使用類。 如果您需要編寫自己的匹配器,則需要使用 Define Class() 和 Method(),但我們提供了大量的庫,因此您可能不需要更多。
回复:使用 Hamcrest 自動化 JSL 測試 (2019-EU-45MP-061)非常感謝@Justin_Chilton 。 我找到了插件,當然謝謝! 對於這些問題,我想知道使用 Define Class( ) 和 Method( ) 是否對於對具有 UI 的應用程序使用 hamcrest 測試至關重要? 我不熟悉這樣的腳本方式......
回复:使用 Hamcrest 自動化 JSL 測試 (2019-EU-45MP-061)你好@卡羅爾,JMPMan 示例位於加載項中,但我已將它們上傳到 zip 文件中,以便更容易訪問。 如果您有任何疑問,請告訴我!
回复:使用 Hamcrest 自動化 JSL 測試 (2019-EU-45MP-061)你好@Justin_Chilton ,謝謝 hamcrest 的介紹。 您能否分享您在演示文稿中開發的示例:JMPMan 應用程序和 JMPManGuiTests.jsl ? 對我來說,將腳本邏輯複製到其他應用程序中應該更容易。 多謝。 卡羅爾
回复:使用 Hamcrest 自動化 JSL 測試 (2019-EU-45MP-061)謝謝! 我趕上了談話,我認為你們走在正確的軌道上。 我期待看到合併的內容!
回复:使用 Hamcrest 自動化 JSL 測試 (2019-EU-45MP-061)你好@內森-克拉克,
我們一直在討論數據表匹配器如何在 GitHub 上工作: https://github.com/sassoftware/jsl-hamcrest/pull/57
我認為@vince_faller可能已經在做某事了。
-賈斯汀
回复:使用 Hamcrest 自動化 JSL 測試 (2019-EU-45MP-061)前幾天我剛剛在思考這個問題@vince_faller 。你找到答案了嗎? 我正在考慮使用比較數據表平台,但沒有看到可以在單元測試中使用的輸出。
回复:使用 Hamcrest 自動化 JSL 測試 (2019-EU-45MP-061)是否有比較數據表的最佳實踐?我找不到匹配器。