云服务器_国外域名注册_稳定性好

时间:2022-01-02 19:16       来源: 微辰云

云服务器_国外域名注册_稳定性好

ABAP单元测试

在拉斯维加斯的TechEd 2017,我安排了一个网络会议,时间是周二5:00到5:30,在导师休息室的展厅。时间安排反映了这样一个事实:我不想在6:00喝酒之前安排任何事情,作为奖励,手机网站建站,如果没有人来,我至少会在正确的地方喝酒。你必须把这些事情想清楚。

无论如何,网络会话都是关于ABAP中的单元测试。TechEd是关于最新和最先进的技术,但我突然想到,不管你的玩具有多闪亮和新,如果你还没有掌握好基本知识,那么你仍然注定要失败。

一个网络会议远比一个直接的讲座更具互动性,虽然我会有一些幻灯片关于为什么我觉得自动化单元测试很重要,关于我所发现的最好的方法(并说服你的经理)我也非常想知道,在整个ABAP世界中,是否有人从我那里甚至梦想着在遥远的将来有一天能真正地创建一些ABAP单元测试。

你知道我去年夏天做了什么吗?

在工作中,我有一个千载难逢的机会去说服我的同行,无论是在澳大利亚还是在德国的总部,单元测试是最重要的,它可以让你的程序在不断变化的用户需求面前坚如磐石。

这一知识在ABAP领域之外是众所周知的,已经有很长一段时间了。我要尽我最大的努力让大家相信这是前进的方向,部分原因是我已经做了五年了,或多或少的真实,并发现它为你做的一切都是写在外面的罐头。

SAP苹果酒出版社

一个惊人的巧合,SAP出版社想让我写一篇介绍和结论来"包装"我那本不错的ABAP旧书的摘录。关于单元测试的整个章节都可以在网上阅读,但是他们觉得如果我加上我的10美分会更好,我要写博客,就像一个不能透露姓名的人写微博一样,完全失控,可能会根据任何时刻我脑海中闪过的任何东西而偏离正轨,无论相关与否。

作为一个例子,今天我了解到英国酿酒商Fuller Smith和Turner,总部位于Chiswick,伦敦正在用一个新的ERP系统取代许多不同的过时IT系统,该系统将所有这些功能整合到一个系统中。他们把这个基于美国著名的马歇尔和枪手的"怀亚特项目"称为"怀亚特ERP"。

回到单元测试,今天我做了一个关于这个主题的演讲,混合了更重要的"为什么"你应该做单元测试和实际的机制,使你的程序可测试触摸对象:-

上面的幻灯片假定您已经识别了代码中的所有"依赖项"–在本例中,您将读取数据库,然后将所有此类读取隔离到数据库访问类中。

这是"单一责任"原则。该类将有一个职责,即与数据库交互。现在是时候转移到这本书的节选部分了,这本书讨论了这种"模拟"对象。

实现模拟对象

在您将每个依赖项隔离到自己的类中之后,您可以更改现有的程序以利用ABAP单元框架。有两个步骤:

Mock Objects vs.Stub Objects:当谈到Mock Objects时,Stub和Mock这两个术语经常互换使用;但从技术上讲,这是有区别的。如果您测试的是类如何影响外部系统,那么伪外部系统就是一个mock,如果您测试的是伪外部系统如何影响类,那么伪外部系统就是一个存根。(不管是哪种方式,关键是您使用了一个假的外部系统来进行测试。)

在开始创建模拟对象和注入之前,让我们首先快速了解一下测试注入,它是通过测试接缝引入的。这不是你应该如何实现模拟对象,但你应该至少看到一次它的运行情况,然后再取消它。

1测试接缝的测试注入

测试接缝的测试注入是穷人实现模拟对象的版本。不要在模拟类中用重复的代码替换整个例程,而是在这些例程中标记部分(一行或多行代码),以便在测试期间用不同的代码替换它们。换句话说,您可以选择用测试接缝来包围生产代码的各个部分。当程序在生产环境中运行时,将执行测试seam中的实际代码。在运行测试时,您定义了一些伪代码,这些伪代码的格式如下所示。

方法发射核导弹。

测试方法

测试注入读取数据库。

*设置各种变量,就像你从

*实际数据库

结束测试注入。

测试注入用户输入。

用户回答='1'。

结束测试注入。

执行发射核导弹。

结束方法。

这工作正常;测试注入可以是空的,因此在测试期间没有执行代码,因此没有读取数据库数据,没有导弹发射,一切都很好。

这一切都很好,但不要这样做;这是更多的麻烦比它的价值,如果适当的程序员抓住你,他们会让你站在角落里,在你的头上傻瓜帽。相反,请按照下一节进行操作。

2创建模拟对象