本节书摘来自异步社区出版社《测试驱动数据库开发》一书中的第2章,第2.1节,作者:测试驱动数据库开发,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.1 TDD中类的角色

测试驱动数据库开发
在测试驱动开发中,一个类的主要作用是提供一种机制,以便许多具有相同行为的对象能够被创建。这一点非常重要,因为测试软件的方式就是通过检查一个单独对象的行为,并据此来预知从该对象的类生成的所有其他实例的行为。

当没有类时,测试仅仅告诉开发者有关某个特定对象的情况。当有了类时,测试会告诉开发者有关对象将如何被创建的情况,并进一步告诉开发者所有其他对象将如何被创建的情况。

2.1.1 可靠的实例化过程

当人们说“我写了一个对象来做X事情”时,事实上并没有写一个对象,而是写了一个类的对象来做X事情,正确的说法应该是“我写了一个类来做X事情”。

人们说他们写对象是因为类和对象之间的界限对他们现在来说是非常模糊的。有一个类通常意味着能得到一个对象,能够得到一个对象通常意味着有一个类。

如果用C#来写一个类的对象,实例化甚至不是要考虑的。这缘于开发了这个类,就意味着它将完全可靠地提供所需要的任意数量的对象,这些对象都能被创建,都能工作,并且都能以该类的其他实例完全相同的方式来工作。

2.1.2 测试检查对象

类能够安全和一致地产生对象这件事是如此的基础,以至于开发人员完全把其当成理所当然的事情。当教一个应用开发人员做测试驱动开发时,我可能会让他为构造方法写一些测试,但是只让他测试需要增加到这个构造方法上的行为,而不需测试刚刚创建好的对象是否被正确地创建了。

从小的方面来讲,那是因为我不认为构造方法比测试一个方法调用更有测试的必要。然而,这不是我不教人测试构造方法进行对象构造的主要原因。

我不教人测试构造方法进行对象构造的真正原因,是因为对我来说从来就没发生过构造方法可能没有构造好一个对象这种情况。当然,这种情况发生的机会还是存在的,但是微乎其微,本书不再考虑这个问题。

以上是对概念进行的一些解释,读者需要换一种方式来考虑这个问题。当在面向对象的系统上进行测试驱动开发时,我实际上是用类之间的关系来进行思考。测试类测试生产类,生产类使用服务类,等等。

然而,实际情况并不是这样的。当为一个生产类写一个测试类时,该测试类真的没有测试该生产类。取而代之的是,该测试类产生了一个内含一堆测试的测试对象。这些在测试对象里的测试接着就获得生产类的实例,并请求这些实例来做事情,然后对结果进行分析和报告。

通常情况下,尽管每次运行都使用全新的测试和生产对象,但都可以数百次地运行同样的测试,并看到完全相同的结果。正是这种可重复性让我确信,在生产部署环境中,生产对象将会正常工作。事实上,上述可预见性允许用类之间的关系来思考,而不是用它们创建的对象之间的关系来思考。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

《测试驱动数据库开发》——2.1 TDD中类的角色相关推荐

  1. 《测试驱动数据库开发》—第1章1.2节谁是目标读者

    本节书摘来自异步社区<测试驱动数据库开发>一书中的第1章1.2节谁是目标读者,作者[美]Max Guernsey, III,更多章节内容可以访问云栖社区"异步社区"公众 ...

  2. 《测试驱动数据库开发》——1.2 谁是目标读者

    本节书摘来自异步社区出版社<测试驱动数据库开发>一书中的第1章,第1.2节,作者:测试驱动数据库开发,更多章节内容可以访问云栖社区"异步社区"公众号查看. 1.2 谁是 ...

  3. tSQLt单元测试的测试驱动数据库开发(TDDD)基础

    This article talks about core concepts of test-driven database development followed by creating simp ...

  4. 测试驱动开发 测试前移_测试驱动的开发可能看起来是工作的两倍-但无论如何您都应该这样做...

    测试驱动开发 测试前移 by Navdeep Singh 通过Navdeep Singh 测试驱动的开发可能看起来是工作的两倍-但无论如何您都应该这样做 (Test-driven developmen ...

  5. python可以开发驱动吗_Python机器学习实践:测试驱动的开发方法

    Python机器学习实践:测试驱动的开发方法 作者:(美)马修·柯克(Matthew Kirk) 著 出版日期:2017年10月 文件大小:30.91M 支持设备: ¥40.00在线试读 适用客户端: ...

  6. 机器学习实践测试驱动的开发方法pdf

    下载地址:网盘下载 内容简介  · · · · · · 本书主要介绍如何将测试驱动开发运用于机器学习算法.每一章都通过示例介绍了机器学习技术能够解决的有关数据的具体问题,以及求解问题和处理数据的方法. ...

  7. 虚拟串口驱动 开发_服务虚拟化如何与测试驱动的开发相关

    虚拟串口驱动 开发 敏捷的软件开发方法依赖于服务虚拟化,以赋予每个IT团队自治权. 这种方法消除了障碍,使自治团队可以继续开发活动,而不必等待任何人. 这样,团队就可以开始迭代/冲刺,从而开始集成测试 ...

  8. react测试组件_测试驱动的开发,功能和React组件

    react测试组件 This article is part of my studies on how to build sustainable and consistent software. In ...

  9. 测试驱动javascript开发 -- 4.测试驱动开发过程(下)

    TDD是一个迭代的开发过程,他包括下面的步骤:1.编写测试:2.运行测试,观察失败:3.确保测试通过:4.重构,减少重复. 每次迭代中,测试就是规范.在我们完成开发之后,测试就可以通过了.之后我们就需 ...

  10. vue-jest测试用例_用Jest快速介绍测试驱动的开发

    vue-jest测试用例 by Nicolas Mitchell 尼古拉斯·米切尔(Nicolas Mitchell) This article is a simple walkthrough of ...

最新文章

  1. 一个简单的缓冲区溢出的思考
  2. svcagent32.exe,javaM.exe木马查杀解决方案 (转Ad0.cn)
  3. 经纬度坐标转换xy坐标 python_在Python中使用NewtonRaphson迭代将经纬度转换为xy Mollweide地图坐标...
  4. [转]matlab 函数三种定义方式
  5. 『软件测试3』八大典型的黑盒测试方法已来袭,快快接住!
  6. json mysql 字段 默认值_MySQL JSON 类型数据操作
  7. MyCat的zookeeper集群模式总结
  8. 如何判断电脑是否中毒(转)
  9. mysql删库命令是啥_MySQL删除数据库的命令是什么?
  10. selenium与自动化测试成神之路
  11. Spring注解@Value在controller无法获取到值
  12. 类和对象1:基础学习
  13. 写给大忙人看的进程和线程(内附思维导图)
  14. python配置cgi_Python+Apache+CGI完全配置
  15. 面向智能网联汽车边缘网络的分布式端-边协同算法
  16. 信息收集之主动信息收集(一)
  17. 学生专用计算机怎么没声音,win7麦克风没声音怎么设置_电脑麦克风没声音怎么办...
  18. linux下git安装和配置
  19. 无损音乐刻录成cd有意义吗_Mac装机必备之拯救歌荒,好用的五款Mac音乐播放器推荐!...
  20. 安装hmc会依赖bios时间吗_VMWARE安装HMC

热门文章

  1. 编程实现strstr函数
  2. python获取程序运行路径
  3. python graphviz_Python中Graphviz的输出问题
  4. python图像边缘检测报告_python计算机视觉2:图像边缘检测
  5. idf逆文档频率为什么要用log??
  6. 最大似然估计MLE和最大后验概率MAP
  7. vofuria的开发(1)
  8. sharelatex在centos 6.7 64位上的部署(2)
  9. Python集合set与frozenset的区别
  10. 操作系统课设 Nachos 实验四、五:Nachos 的文件系统、扩展 Nachos 的文件系统