《单元测试的艺术(第2版)》是单元测试领域的经典著作,它以全面的方式介绍了单元测试的技术和方法。书籍分为四个部分,第一部分详细阐述了单元测试的基本概念,包括如何正确使用测试框架进行测试。作者深入浅出地解释了各种单元测试的原理和技巧,使读者能够更好地理解和应用单元测试。这本书不仅适合初学者入门,也能对有一定单元测试经验的开发人员起到进一步提高的作用。无论你是想系统学习单元测试还是想提升自己的测试技术,这本书都是一个不可或缺的参考工具。
单元测试的艺术
读者评价
所有程序员都知道应该做单元测试!很不错的入门书,哪怕那是用C#写的案例代码,和java又有多大区别呢
理论性还是比较强的,个人感觉对编程功底尤其是面向对象的理解有一定要求。想写出好的单元测试还是蛮不容易的,配合测试驱动开发实践效果更佳。要说缺点就是没有真实项目示例,有些东西可能看得似懂非懂
这本书由浅入深的介绍了单元测试方方面面的知识,包括最基本的单元测试的定义、如何编写简单的单元测试、如何解除系统中的依赖(在单元测试中)之外,还告诉我们如何编写优秀的单元测试,以及如何向组织中引入单元测试,如何处理遗留代码的问题,如何设计易于测试的代码。全书的结构层次分明,内容也是渐进式的推进,所以还是很好理解的,不过也有一些小的瑕疵:主要是一些代码印刷错误的问题,不过这对阅读理解这本书的影响也不太大,算是无伤大雅吧。对于想深入理解和学习如何编写优秀单元测试的同学,推荐阅读。不过,阅读后更重要的事情是马上开始动手练习。
单元测试算是今年比较关注的一个主题,内容还算不错。就是语言写的是C#。没太能理解。
内容介绍
《单元测试的艺术(第2版)》是经典的单元测试学习指南,分四部分全面介绍了单元测试技术。第1部分阐述单元测试基本概念,包括如何使用测试框架。第二部分讨论破除依赖的高级技术:模拟对象、存根和隔离框架,包括重构代码以使用这些技术的模式。第三部分介绍测试代码的组织方式、运行测试和重构测试结构的模式,以及编写测试的实践。第四部分介绍如何在组织内实施变革和修改现有代码。
《单元测试的艺术(第2版)》适合所有语言的测试和开发人员,特别是测试主管和项目经理。
目录
- 第一部分 入门
- 第1章 单元测试基础 2
- 第2章 第一个单元测试 17
- 第二部分 核心技术
- 第3章 使用存根破除依赖 44
- 第4章 使用模拟对象进行交互测试 68
- 第5章 隔离(模拟)框架 81
- 第6章 深入了解隔离框架 99
- 第三部分 测试代码
- 第7章 测试层次和组织 112
- 第8章 优秀单元测试的支柱 136
- 第四部分 设计和流程
- 第9章 在组织中引入单元测试 168
- 第10章 遗留代码 183
- 第11章 设计与可测试性 194
- 附录A 工具和框架 208
随着敏捷开发在项目中的大量应用,特别是测试驱动开发的流行,我越发的体会到单元测试与其中所扮演的重要角色。 问不同的程序员,他们对单元测试的定义应该会不一样,或者说他们给出的解释会很笼统,不全面。这其实是由于单元测试本身的特点所决定的,一个测试的优与劣,不是由单一的因素决定,而是同时受多个变量的约束。此时,一本系统的介绍单元测试的书就显得格外重要。 书中,作者细致的阐述了衡量一个好的单元测试应该满足的条件,其中包扩了单元测试的简明性,可维护性,高效性,及测试范围等多个方面。此外,作者还用了大量的篇幅去解释如何实现单元测试的隔离性。个人认为,这是实现优秀的单元测试的最重要的一个环节,因为此性质是单元测试和整合测试最重要的差别所在。在帮助实现单元测试隔离的过程中,另外两个重要的概念也在书中有所谈及,这便是Mock和Stub。对于这两者关系和区别的最经典的解释可以参照Martin Folwer的文章。 余下的章节中,作者介绍了测试的构架,测试在项目中的应用,以及和设计相关的部分。 虽然书中的例子用的都是c#,但对于有面向对象基础的读者,是不会产生阅读障碍的。
这本书是我再遇到单元测试一些困扰后偶然间看到别人的推荐才看的,前前后后连拖带看差不多看了个把月,不过大部分内容都是最近紧凑得看完的,感受就是有所收获。 做个小小总结吧,算是我觉得本书一些讲得比价好的地方。 1. 一个单元测试通常包含三个行为:准备对象、操作对象、断言 2. 没有什么面向对象的问题是不能用增加一个间接层解决的,当然,除了间接层过多这个问题 3. 存根永远不会导致测试失败,但是,测试会使用模拟对象验证测试是否失败;这是存根和模拟对象的根本区别 4. 单元测试可能有三种结果:返回值、改变系统状态和调用第三方 5. 如果有超过 5% 的测试使用了模拟对象,你就可能过度指定了 6. 隔离框架设计反模式:概念混淆、录制和重放、粘性行为、复杂语法 7. 优秀单元测试三个基本支柱:可靠性、可维护性 和 可读性 8. 保持持续构建,保持单元测试和集成测试,但是单元测试和集成测试应该分开