云网站服务器_国内数据云存储_移动云数据库服务器主机-搜集站云

域名注册_233服务器_怎么样

小七 141 0

在这个阶段,人们总是喜欢或者讨厌单元测试的想法。随着课程的进行,主题变得越来越复杂,因此分歧也越来越大。

本周的主题是"测试隔离"。

隔离病房

作为一个搅局者,我是一个越来越喜欢这个过程的人,而不是那些越来越感到失落的人。

无论如何,有两条线要测试隔离-测试双重和依赖注入。

我已经在SCN的博客上写了很多年了,单元测试甚至是我SAP书中免费示例一章的主题https://blogs.sap.com/2013/04/18/are-you-writing-evil-abap-code/

https://blogs.sap.com/2014/03/25/shoot-me-up-abap/

挖掘一个双倍体

测试双倍体是一个类,假装它不是什么,但从外面看什么也看不出来在这门课上,很好的类比是特技替身或身体替身。对于观看这部电影的观众来说,它的外表和行为就像一个主要演员,但事实并非如此。

你为什么希望这样一个冒名顶替者出现在你的节目中?这是不是有点邪恶的"劫匪入侵"的情况,外星人模仿你的部分程序,企图占领世界?

没有什么是因为它接缝

原因是传统的代码充满了"接缝",低价的云服务器,这些接缝是时空结构中的裂缝,大数据是干嘛的,通过这些裂缝,您的程序与程序的其他部分或外部世界进行交互,方式不同于传入和传出参数。

有大量可能的接缝,包括但不包括限于:-

读取和更改全局变量的值读取或写入数据库(被描述为最终的全局变量,我以前从未这样看待过它,但这是一个准确的描述)获取当前时间打印一些东西与外部系统的接口(例如代理调用)对实际用户的确认提示创建对象

为什么"接缝"不好?它们是不可预测的,你的日常工作应该是做一件事,那一件事就是你想测试的,但是每一个seam都可以随机地改变你的例程的行为,使得一个自动测试变得不可能。

你想用一个看起来相同,看起来行为相同的相同的复制品来替换每一个这样不可预知的相同品,但实际上每次都做完全相同的事情。换句话说,你不想让被测试的代码知道它是真正运行的,还是作为一个自动测试运行的。

这样做的结果是你可以在一个例程上运行一个自动测试,所有被测试的是测试中的业务逻辑,而不是通常所知道的"接缝"或依赖关系,因为99%的代码"依赖"于诸如读取数据库之类的东西。

在我的一个程序中,我有大量的条件逻辑和数学公式,通过操纵值来得到最终结果(混凝土中成分的数量)。然而,起始值来自一堆配置表,在现实生活中,这些配置表根据业务需求一直在变化,因此基本上是随机的,并且是随机间隔的。温度也是一个因素。我想测试公式是否有效,我不关心配置表中的实际值。当我更改公式中的逻辑时,我希望测试我更改的条件逻辑代码,我不希望配置数据(或当前温度)的更改以某种方式影响结果。如果当前的温度影响了测试结果,bi大数据,你可能每小时都会得到不同的结果。

我承认,这个身体双重"接缝"的事情是一个非常奇怪的概念,让你的脑袋乱来。

人群中的接口

接口

过程中的事现在确实变得非常混乱。我可以猜到他们的方向,但演示者采取的方法是,微信返利机器人可靠吗,一个"单元"是关于如何更改代码以使其"可测试",然后另一个单元是关于如何将测试双倍注入到真实代码中。

问题是,为了不超越自己,他们在第一个单元中根本没有提到"注入"因此,这似乎是一系列毫无目的地随意移动代码的例子,因为每次更改后的最终结果总是一样的。

尤其是代码示例不断地得到"接口"的添加,似乎没有任何理由。

在最好的时候,"接口"是一个很难掌握的概念。我总是用日本人的比喻——他们说一个人有三张脸:他们向世界展示的脸,他们向朋友和家人展示的脸,以及他们只向自己(或没有人)展示的脸,受保护的和私人的方法和属性。

在这两种情况下,有时甚至需要更多的限制,你想向世界展示的面孔(公共方面)因你向世界的哪个部分展示而有所不同,例如,我是一名会计,我是一名志愿消防员,我有时会变成被称为"棕色瓶子"的超级英雄。在每种情况下,你一次只想展示自己的一个方面。

界面就像一个类可以戴的面具。在上面的示例中,person类将实现所有三个接口,并且将有三个完全独立的调用课程:-

calculate numbers类导入会计界面输入的对象fire fires类导入类型化到firefighter接口的对象battle Thrable monsters类导入输入到superhero接口的对象

每个调用程序只能访问在接口中声明的导入"person"部分,云服务器是,例如会计程序不能调用person的"fly"方法,只有与怪物搏斗的程序才能做到这一点。

这在面向对象编程中是一个普遍有用的概念–接口通常被描述为继封装、抽象、继承和多态性之后的面向对象编程的"第五披头士"。

在测试时发现,如果一个类通过接口描述其行为,那么它就更容易用测试替身代替。然而,这是,一点也不明显。