具体描述
程序员修炼三部曲丛书包含了四本书,介绍了每个注重实效的程序员和成功团队所必备的一些工具。
注重实效的程序员都会利用反馈来指导开发,并驱动个人的开发流程。编码的时候,最有用的反馈来自于“单元测试”。
为了测试一座桥梁,不会只在晴朗的天气,开一辆汽车从桥中间穿过,就认为已经完成了对桥梁的测试。然而许多程序员却正在使用这种测试方法——把这种一次顺利通过称为“测试”。事实上,注重实效的程序员应该能够做得比这更好。
从这本书中,您能够学到:
编写更好,更快,并且bug更少的代码。
找到bug的隐身之处,并且学会如何修正这些bug。
在不使用整个项目的前提下,就可以测试一小段代码。
学会如何JUnit来简化测试代码。
如何在开发小组中展开高效的测试。
本书将借助面向Java的免费程序库JUnit来对单元测试进行描述;这些技术同样也适用于其它语言和框架(本丛书还有一本针对Java版本的姐妹书籍《单元测试之道C#版——使用UNnit》)。
《程序员修炼三部曲》是一套由四本小册子组成的丛书,旨在帮助解决程序员在日常工作中遇到一些具体问题和需要,覆盖了对于现代软件开发非常重要的基础性知识。这套丛书不仅展现了注重实效的实际技巧、工具使用,也贯穿了作者们在其名作《程序员修炼之道:从小工到专家》中所坚持的开发哲学。而所有这些,都是帮助开发人员和开发团队进行正常开发,并带来高开发效率的利器。
《单元测试之道Java版——使用JUnit》是本丛书的第二本(本书还有C#版本《单元测试之道C#版——使用JUnit》),阐述使用自由公开的JUnit程序库以Java语言进行单元测试,其内容也广泛适用于其他语言和框架程序库。本书主要内容包括:如何更高效地撰写bug更少的代码:如何发现bug的藏身之处以及如何清除bug;如何测试代码片断而不用牵连整个项目;如何利用JUnit简化测试代码;如何在团队中高效地进行测试,等等。
本书主要适用于具有一定编程和设计经验,但是对单元测试并不是很有经验的Java程序员。
作者简介
Andrew Hunt和David Thomas是Pragmatic Programmers的合伙人。他们不但为客户开发复杂的软件系统,而且为开发者和项目经理提供具有实务的各种资源。他们的第一本书《程序员修炼之道——从小工到专家》(The Pragmatic Programmer:From jouneyman to master)是面向技术和实践的畅销书籍,旨在让编码过程更加高效和有趣。
目录信息
前言
第1章 序言
1.1 自信地编码
1.2 什么是单元测试
1.3 为什么要使用单元测试
1.4 我需要做什么呢
1.5 如何进行单元测试
1.6 不写测试的借口
1.7 本书概要
第2章 你的首个单元测试
2.1 计划你的测试
2.2 测试一个简单的方法
2.3 更多的测试
第3章 使用JUnit编写测试
3.1 构建单元测试
3.2 JUnit的各种断言
3.3 JUnit框架
3.4 JUnit测试的组成
3.5 自定义JUnit断言
3.6 JUnit和异常
3.7 关于命名的更多说明
3.8 JUnit测试骨架
第4章 测试哪些内容:Right-BICEP
4.1 结果是否正确
4.2 边界条件
4.3 检查反向关联
4.4 使用其他手段来实现交叉检查
4.5 强制产生错误条件
4.6 性能特性
第5章 CORRECT边界条件
5.1 一致性
5.2 有序性
5.3 区间性
5.4 引用/耦合性
5.5 存在性
5.6 基数性
5.7 时间性
5.8 自己动手尝试
第6章 使用Mock对象
6.1 简单的替换
6.2 Mock对象
6.3 测试Servlet
6.4 Easy Mock对象
第7章 好的测试所具的品质
7.1 自动化
7.2 彻底的
7.3 可重复
7.4 独立的
7.5 专业的
7.6 对测试进行测试
第8章 在项目中进行测试
8.1 把测试代码放到哪
8.2 测试的礼貌
8.3 测试的频率
8.4 测试与遗留代码
8.5 测试与评审
第9章 设计话题
9.1 面向测试的设计
9.2 为测试而重构
9.3 测试类的不变性
9.4 测试驱动的设计
9.5 测试无效的参数
附录A Gotchas
A.1 只要代码能工作就可以
A.2 “冒烟”测试
A.3 “请让我的机器来运行”
A.4 浮点数问题
A.5 测试耗费的时间太多了
A.6 测试总是失败
A.7 在某些机器上测试失败
A.8 我的main没有被运行
附录B 安装JUnit
B.1 命令行安装
B.2 管理用吗
附录C JUnit
C.1 辅助类
C.2 基本模板
附录D 资源
D.1 网络资源
D.2 参考书目
附录E 注重实效的单元测试:总结
附录F 习题答案
索引
· · · · · · (收起)
读后感
对OOP有一定理解的读者一定会发现,本书没有讲到单元测试的精髓。什么是单元测试的精髓呢?我认为是测试类的内聚性。举个例子:stack类的push和pop方法就是一种高内聚,它们的组合才有stack体现出FILO的性质。单元测试的目标不是孤立地测试push和pop,而是测试FILO性质。 单元...
这本书只有170多页,让你能够在短时间内了解如何使用JUnit进行单元测试,而不必啃着大部头还带着挫折感,是学习Junit的首选入门书籍。作者首先告诉你单元测试的重要性,然后手把手教你如何使用Junit进行简单的单元测试,最后以自己的经验告诉读者好的测试应该具有怎样的品质。...
当一个失败或者错误出现的时候,当前测试方法的执行流程将会被中止,但是(位于同一个测试类中的)其他测试将会继续进行。 断言: assertEquals([String message] , expected , actual); message可选消息。错误发生时报告这个消息。 数组,比较的是引用。 比较浮点数: as...
当一个失败或者错误出现的时候,当前测试方法的执行流程将会被中止,但是(位于同一个测试类中的)其他测试将会继续进行。 断言: assertEquals([String message] , expected , actual); message可选消息。错误发生时报告这个消息。 数组,比较的是引用。 比较浮点数: as...
这本书只有170多页,让你能够在短时间内了解如何使用JUnit进行单元测试,而不必啃着大部头还带着挫折感,是学习Junit的首选入门书籍。作者首先告诉你单元测试的重要性,然后手把手教你如何使用Junit进行简单的单元测试,最后以自己的经验告诉读者好的测试应该具有怎样的品质。...
用户评价
坦白说,起初我对《单元测试之道Java版》抱有一丝怀疑,因为市面上关于单元测试的书籍并不少,但很多都流于表面,要么讲得过于理论化,要么就是简单罗列一些框架的使用方法。但这本书真的给了我惊喜。它不仅仅是告诉你“怎么做”,更重要的是告诉你“为什么这么做”。作者在书中深入浅出地解释了单元测试的背后原理,例如“如何利用单元测试来理解需求”、“测试覆盖率的意义和局限性”、“如何处理并发和异步场景下的单元测试”。我尤其欣赏作者对于各种常见陷阱和误区的提醒,比如“过度设计测试”、“测试泄露实现细节”等等,这些都是我在实际开发中常常遇到的问题,书中提供的解决方案让我茅塞顿开。而且,这本书的结构设计非常合理,从基础概念到高级技巧,循序渐进,层层递进,让我能够一步一步地掌握单元测试的精髓。书中提供的丰富案例和实战建议,也让我能够快速将所学知识应用到自己的项目中。
作为一名在Java领域摸爬滚打多年的开发者,我一直都在寻找能够真正提升我代码质量和开发效率的“内功心法”,而《单元测试之道Java版》无疑就是我寻觅已久的宝藏。这本书并非简单地罗列各种测试框架的使用指南,而是从更深层次去探讨单元测试的哲学和艺术。作者通过对“如何思考测试”、“如何让测试驱动设计”、“如何衡量测试的有效性”等问题的深入剖析,让我对单元测试的理解不再局限于“写代码验证代码”这个层面,而是将其提升到了“编写高质量、易维护、可演进代码”的高度。书中对于“重构与测试”、“设计模式与可测试性”的结合讲解,更是让我醍醐灌顶,我开始意识到,单元测试并非是开发过程中的一个附加项,而是可以成为指导代码设计、提升代码健壮性的核心驱动力。书中提供的那些关于如何构建“理想的被测代码”的建议,以及如何优雅地处理各种复杂的依赖关系,都让我受益匪浅,让我开始审视自己过往的编码习惯,并有意识地去改进。
这本书简直是为我量身定做的!我一直想深入理解单元测试的精髓,尤其是如何将其有效地应用于Java开发中。之前也看过一些相关的文章和零散的资料,但总感觉碎片化,缺乏系统性。当我在书店看到《单元测试之道Java版》时,我立刻就被它的标题吸引住了。翻开目录,我发现这本书涵盖了单元测试的方方面面,从最基础的概念、原则,到各种实用的框架和技术,再到如何设计可测试的代码,甚至还深入探讨了TDD(测试驱动开发)和BDD(行为驱动开发)等高级话题。作者的讲解深入浅出,逻辑清晰,仿佛一位经验丰富的导师在手把手地教导我。书中大量的Java代码示例更是让我印象深刻,我可以直接复制代码,稍作修改就能在自己的项目中实践,这种即学即用的体验太棒了!我尤其喜欢其中关于“如何写出可维护、可扩展的单元测试”的章节,这解决了我一直以来在维护测试代码时遇到的难题。而且,书中还穿插了一些实际项目中遇到的典型问题和解决方案,让我觉得这本书的实用性非常高,不再是纸上谈兵。我强烈推荐给所有Java开发者,无论你是初学者还是有经验的工程师,都能从中获益匪浅。
我之前对单元测试的认识停留在“写一些代码来验证另一个代码片段是否按预期工作”的层面,直到我读了《单元测试之道Java版》。这本书彻底颠覆了我之前的认知,让我明白了单元测试的真正价值远不止于此。它不仅仅是代码的“安全网”,更是提升代码质量、促进迭代开发、甚至指导设计的强大工具。作者通过对单元测试的深层原理的剖析,让我理解了“测试应该关注什么”、“如何设计出易于测试的类”、“什么时候应该写测试”,这些都是我之前从未深入思考过的问题。书中的一些设计模式和代码重构技巧,与单元测试的结合让我眼前一亮,原来单元测试不仅仅是“后置”的验证,更可以成为“前置”的驱动力,引导我们写出更简洁、更优雅、更健壮的代码。我尤其喜欢其中关于“mocking和stubbing”的讲解,它让我能够隔离被测单元,更精确地控制依赖,从而编写出更可靠的测试。这本书让我对如何编写高质量的Java代码有了全新的认识,感觉自己的编程思维也得到了升华。
这本书给我最大的感受就是“实用”和“透彻”。我之前接触过一些单元测试的资料,但总觉得不够系统,有些东西讲得模棱两可,让我无从下手。《单元测试之道Java版》这本书就完全不同了。它非常系统地梳理了单元测试的整个生命周期,从设计、编写、运行、维护,每一个环节都讲解得非常到位。我尤其喜欢书中关于“如何为遗留代码编写单元测试”的部分,这简直是救我于水火之中!我接手的项目代码库庞大且缺乏测试,一直让我头疼不已,这本书提供的循序渐进的方法和具体的技巧,让我找到了突破口。而且,书中对于各种测试设计原则的阐述,比如“FIRST原则”、“AAA原则”等,都非常清晰易懂,让我能够快速理解并应用到实践中。书中提供的代码示例非常贴近实际开发场景,我可以直接借鉴,并且书中的很多建议,比如“如何选择合适的断言”、“如何编写具有描述性的测试方法名”,都能够直接提升我编写测试的效率和质量。我强烈推荐给所有希望提升自己Java开发能力的开发者。
言简意赅,JUnit版本有些老,原则还是适用的。Mock部分讲的有些简略,实际操作的话还需要更高级的用法和书籍。
言简意赅,JUnit版本有些老,原则还是适用的。Mock部分讲的有些简略,实际操作的话还需要更高级的用法和书籍。
写了一大堆test-case却不知道写这些意义何在~170页的话还是看一下吧
好书,简洁,使用,入门至佳
JUnit测试入门书籍