使用 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)是否有比较数据表的最佳实践?我找不到匹配器。