《测试驱动数据库开发》——2.1 TDD中类的角色-阿里云开发者社区

开发者社区> 异步社区> 正文

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

简介:
+关注继续查看

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

2.1 TDD中类的角色

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

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

2.1.1 可靠的实例化过程

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

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

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

2.1.2 测试检查对象

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

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

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

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

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

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

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
PostgreSQL 数据库实例只读锁定(readonly) - 硬锁定,软锁定,解锁
PostgreSQL 数据库实例只读锁定(readonly) - 硬锁定,软锁定,解锁
564 0
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 28 章 监控数据库活动
第 28 章 监控数据库活动 目录 28.1. 标准 Unix 工具 28.2. 统计收集器 28.2.1. 统计收集配置 28.2.2. 查看统计信息 28.2.3. 统计函数 28.3. 查看锁 28.4. 进度报告 28.4.1. VACUUM进度报告 28.5. 动态追踪 28.5.1. 动态追踪的编译 28.5.2. 内建探针 28.5.3. 使用探针 28.5.4. 定义新探针 一个数据库管理员常常会疑惑,“系统现在正在做什么?”这一章会讨论如何搞清楚这个问题。
963 0
Apache ShardingSphere:由开源驱动的分布式数据库中间件生态
2021 年 7 月 21 日 2021 亚马逊云科技中国峰会现场,SphereEx 联合创始人、Apache ShardingSphere PMC 潘娟受邀参与此次峰会,以《Apache ShardingSphere 分布式数据库中间件开源生态构建》为主题,围绕开源理念扩散、社区建设、ShardingSphere 如何践行 Apache Way 等方面展开了介绍,本文总结自潘娟内容分享。
76 0
谈谈低代码在前后端开发的应用领域
从一个从事过前后端大数据AI开发的角度谈下低代码的应用
259 0
企业打开云HBase的正确方式,来自阿里云云数据库团队的解读
一、HBase的历史由来 HBase是一个开源的非关系型分布式数据库(NoSQL),基于谷歌的BigTable建模,是一个高可靠性、高性能、高伸缩的分布式存储系统,使用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
3918 0
开启数据智慧,阿里云大数据团队调研高新区
随着“云计算”、“互联网”、“物联网”的快速发展,大数据(Big Data)也吸引了越来越多的人关注,成为社会热点之一。大街小巷不论是技术人员、咨询人士以及各行各业的精英达人都在探讨着“大数据”,“大数据”显然已经成为新一代“网红”。
2014 0
.NET数据库编程求索之路--7.使用ADO.NET实现(工厂模式-实现多数据库切换)(1)
7.使用ADO.NET实现(工厂模式-实现多数据库切换)(1)     7.1 解决方案框架 解决方案(.sln)包含以下几个项目: (1)类库项目HomeShop.DbUtility,数据访问实用工具; (2)类库项目HomeShop.
744 0
Windows DOS窗体下Oracle 数据库的导入导出命令
oracle 用户创建 数据库的导入导出imp/exp 可以在SQLPLUS.EXE或者DOS(命令行)中执行 执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行, DOS中可以执行时由于 在oracle 8i 中 安装目录ora81BIN被设置为全局路径, 该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。 创建用户 给用户增加导入数据权限的操作
2039 0
+关注
异步社区
异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
12049
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载
《2021云上架构与运维峰会演讲合集》
立即下载