云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

MySQL数据库_腾讯云社区_返现

小七 141 0

服务器_自建设网站_超低折扣

简介:GLADIUS–一个测试单元框架

GLADIUS–下一个层次

我的上帝,我们是怎么走到这一步的-GLADIUS秘密

以上的博文是关于测试单元挑战和学习框架GLADIUS的。在这个系列中,我试图改进这个框架,以帮助更好地理解这个框架是如何工作的,并记录开发过程。

尽管我在上一篇文章中的视图比例是0.003,但我决定继续这个系列,因为我不喜欢未完成的事情。

在博客系列的第四步中,好评返现卡,我朝着这个方向又迈出了一大步整洁的应用程序。不幸的是,我遇到了一些新问题…

但是让我们从最新的改进开始。

分割屏幕

以前版本的GLADIUS有一个分割的源代码框架:一个用于数据声明,另一个用于功能本身。代码以这种方式分段的原因很容易解释:评估源代码的SAP演示报告是这样做的……

如果内联声明是最先进的,那么将代码拆分为声明和实现部分就有点过时了。因此,我将GLADIUS编辑器调整为只有一个编辑器,就像普通编辑器一样。

保存解决方案

由于测试越来越难,啥叫人工智能,我不得不在编辑器中进行更多尝试,我错过了一个非常重要的功能:保存代码。一件非常简单的事情,我不知道为什么我等了这么久才实现这个功能。但现在它在那里。可以保存每个用户和任务的代码。?

秘密揭示

秘密测试的实现功能正是这样:一个实现的功能。但没有显示出有用的测试结果。我增加了一个显示秘密测试结果的部分:

我的想法是以同样的方式显示主要单元测试的结果。主要的单元测试以单元测试的标准SAP视图显示,在我的例子中有三个缺点:

Configuration Commander

定义的任务应该有一些属性,这些属性必须以简单的方式配置。我的想法是,有一个对象(不管这个对象看起来如何)可以定义所有这些配置。

一个有趣的事情是定义一个白名单和一个黑名单,以迫使参赛者只使用一组特殊的命令。

一个非常重要的事情是任务的描述。用户应该知道,要做什么。描述可以给出一些提示或提供示例。

指标

我非常满意的一点是,我知道已经将指标集成到任务中。度量是来自代码本身的解决方案属性:

运行时已用语句数已用令牌数字符数

这意味着您可以在任务中定义允许使用多少语句。或者你可以挑战用户使用少于一定数量的字符。

示例

要有一个很好的示例,说明如何使用度量,如何挑战某人,以及如何教授新的ABAP语句,我选择了下面的任务,在这里我准备了测试单元和配置:

这个设置很常见:一个范围表和字符串。

我还检索了所用测试方法的签名,以通知用户什么是进什么是出。

一个解决方案可以像我为这个屏幕截图准备的解决方案:

你做了吗认识度量窗口中的红色圆圈吗?它表示度量失败。我在配置类中定义了只允许使用一个语句…

遇到问题

如果一扇门关闭,另一扇门就会打开。如果一个问题解决了,就会出现另外七个bug…

为了解决这个演示任务,我决定输出必须是一个文本字符串。要使文本可读,必须有行。行将通过使用回车符和换行符来实现。它们在cl\u abap\u char\u utilities=>cr\u lf中定义。不幸被列入黑名单"=>"以防止用户调用任何"危险"的方法。因此,我将不得不花一些时间来允许这种用法,但仍然禁止方法调用。

比较字符串非常容易。CL\u ABAP\u UNIT\u ASSERT=>ASSERT\u EQUALS也做得很好。不好的是不平等的价值观。单元测试框架只显示类似于[**]或[*]的内容。这无助于用户理解代码的错误。我认为应该有一些优雅的方式来显示不同的值。我不知道我是否能得到不同的价值观…

也许克劳斯,可怕的可以帮助?似乎他编写了大量的测试框架……

我了解到一个任务对象需要越来越多的属性和东西。你必须提供一个描述(最好有一些HTML而不是普通的tex),黑名单和白名单,使用的界面,测试单位,秘密测试,指标,我相信会有更多的来。

我想在一个对象中有所有这些参数。我不想有一个描述文字的地方和使用的签名在其他地方。至少我认为每个任务都会有一个数据库条目,这样我就不用为存储库对象操心了。

GLADIUS越来越复杂了。同时,要理解所有的部分并记住事情是如何运作的,这真的很难。在我做更多的增强之前,我担心我必须对代码及其元素做一个完整的重构。不幸的是,我们的内部SAP系统存在一些配置问题,淘客文案,因此我无法联系github更新代码。我会尽快做,

结论