这是格拉迪斯系列的第二部分。第一部分在这里:介绍GLADIUS–一个测试单元框架
之前发生了什么
我将简要概述测试框架的当前进展。GLADIUS是某个项目的名称,有一天它将类似于codefairs或codewars,但对于ABAP.
在简介部分,我开发了用一个全局测试单元类测试各种类的基础知识。通常,可以使用全局测试类作为派生的本地测试类的设置。但是不能用这个全局测试单元测试任何其他类。这就是为什么我们创建了一个helper类。使用这个helper类,我们可以模拟任何其他类(假设实现了正确的initerface…!)要使用这个特定的测试设置,淘客是什么意思,你必须创建一个带有特定条件的类。在这篇博文中,我将向您展示如何使这变得更容易。
路线图
在这一级别中,我们将执行以下操作,大数据是啥意思,以便直接编写解决方案代码,并在代码旁边查看结果。
创建一个包含所有特定测试问题的模板创建测试运行程序以测试包含测试类的报表创建编辑器调用单元测试运行程序并显示结果
从全局到局部
到目前为止我们使用了一个全局类进行测试。这没关系,全国大数据中心,但是使用包含测试类的报表更好,因为它可以很容易地生成并用于初始设置。
报表形式的模板非常简单:
为了确保它与helper类一起工作,我们需要调整helper的类构造函数:
现在我们可以按CTRL-SHIFT-F10来执行的单元测试这个程序
生成器
现在可以很容易地将一个实现复制到这个模板中,大数据是数据,生成报表并运行或检查它。
因此我找到了报表DEMO\u GENERIC\u程序,我只是简单地复制和修改了一点。
这个报表加载了一个模板,并将编辑器中的代码放在METHOD和ENDMETHOD之间:
报表可以进行语法检查和执行:
报表生成了一个临时子例程池和执行MAIN方法。不幸的是,单元测试运行程序不喜欢临时报告…所以我们需要使用插入报告。
单元测试运行程序
有一个简单的方法来执行程序或类的单元测试:
要使用测试运行程序,我们需要使用从CL\u AUCV\u test\u runner\u ABSTRACT继承的类。由于这个类是抽象的,我们需要实现(重新定义)像CL\u AUCV\u TEST\u RUNNER\u STANDARD中那样的方法。这个类被定义为FINAL,所以我们不能使用这个类的派生。我们只是复制了实现:
我们还需要一个passport来创建runner。不知道为什么会这样实现…
SAP测试运行程序使用的passport确保它只能由标准单元测试程序使用。但是如果真的很容易伪造护照……
测试结果的显示
测试单元运行者的结果不能用这个简短的代码显示:
在标准中运行单元测试后得到的视图是一样的:
编辑
报告ZGLDS\U DEMO\U GENERATE\U SOLUTION
演示报告做出了不同的声明和解决方案不需要的实现。但我想使用尽可能类似于演示报告的方法,所以我使用了相同的拆分方法。
有趣的是,您需要在声明窗口中放置"DATA var TYPE I",但可以在实现部分使用"DATA(var)=0"。
不过,您可以执行解决方案并检查是否所有单元测试都通过。
所有单元测试通过?
关于单元测试的这种表示方式有一个令人不快的问题:如果所有测试都通过了,那么运行程序只显示一条成功消息"所有测试都通过了",但不再显示测试。在现实生活中,它是非常有用的,但在我们的例子中,我们希望用户看到测试。
我们实现了一个简单的解决方法,以确保结果显示:
我们添加了一个新的单元测试方法,它总是错误的,但状态是"可容忍的":
这意味着另一方面,测试的结果将始终是黄色的,永远不会是绿色的。也许我们发现了一个技巧,如果所有测试都通过了,那么虚拟测试也被标记为通过了,但这将是很棘手的,因为单元测试将以随机顺序执行。
准备好起飞
现在有了GLADIUS框架的第二部分,我想我们的方法将更清楚地引导我们到哪里:一个可以用于培训、研讨会、教育和竞赛。
如果有一个围绕现有功能的维护工具,大数据分析是什么专业,您可以用各种测试用例构建完整的会话。
如果有诸如代码行数、执行时间、使用的命令数等指标,您可以开始竞赛。
如果有可定制的禁止命令(IF、LOOP、CHECK等)等限制您可以强制用户找到替代解决方案或使用新的ABAP功能。
abapGit
github上的所有源代码:https://github.com/tricktresor/gladius
向拉尔斯·哈瓦姆致敬