前言

前言

测试驱动开发面世已有一段时间,但依然未被很多人采用,因为它难以掌握。虽然理论很容易,但要熟练使用,必须经过大量实践。

多年来,本书作者一直在使用TDD,并试图将其经验传授给你。身为开发人员,他们深信学习编码实践的最佳方式是编写代码和不断练习,本书秉承的正是这种理念——通过练习诠释所有TDD概念。本书犹如一次旅行,期间,你有机会将各种TDD最佳实践应用于Java开发。这次旅行结束时,你将成为TDD黑带,你的软件开发工具中也会多一个法宝。

本书内容

第1章阐述我们的目标——成为拥有TDD黑带的Java开发人员。要想知道我们将去往何方,必须对一些描述旅程的问题进行讨论,并找到答案。

第2章介绍并安装本书将用到的所有工具和框架,再搭建所需的环境。对于每个工具和框架,都将通过代码说明其优缺点。

第3章演示如何使用TDD的支柱——“红灯-绿灯-重构”过程开发一个“井字游戏”。我们将编写测试并确定其失败;然后编写实现测试的代码,运行所有测试并确定其通过;最后,重构并完善代码。

第4章开发“遥控军舰”应用程序,以充分展示TDD在单元测试中的威力。你将学习单元测试到底是什么、它与功能测试和集成测试有何不同以及它在测试驱动开发中扮演的角色。

第5章以传统方法开发Connect4游戏。这个开发过程中,没有编写任何测试,而等到开发结束后才编写。通过这样做,你将认识到开发应用程序时,如果不采用使其易于测试的开发方法,将面临什么样的难题。

第6章阐述速度对TDD来说至关重要。为快速演示一些理念和概念,我们将扩展前面开发的“井字游戏”,并使用MongoDB存储数据。所有测试实际上都没有使用MongoDB,因为我们将模拟所有与MongoDB的通信。

第7章讨论如何使用BDD方法开发一个书店应用程序。我们将以BDD方式制定验收标准,分别实现各项功能。通过运行BDD场景确认每项功能都能正常工作,并在必要时重构代码使其达到预期的质量水平。

第8章介绍如何重构既有的应用程序。我们将首先为既有代码创建测试,然后不断重构,直到测试和代码都满足预期。

第9章演示如何开发一个斐波那契数列计算器,以及如何使用功能开关隐藏还未完成或出于商业考虑不应向用户发布的功能。

第10章详细介绍所有TDD最佳实践,并温习通过阅读本书获得的知识和经验。

需要什么

为完成本书的练习,读者必须有一台64位计算机。对于各种需要用到的软件,本书提供了详尽的安装说明。

为谁而写

如果你是经验丰富的开发人员,想学习更有效的系统和应用程序开发方法,那么本书就是为你而写的。

排版约定

为将不同类型的信息区分开来,本书使用了很多文本样式。下面列出其中一些样式及含义。

正文中的代码、数据库表名、文件夹名称、文件名、文件扩展名、路径名、URL、用户输入和Twitter账号,使用如下样式:

“通过使用指令include,可包含其他上下文。”

代码块使用如下样式:

public class Friendships {
    private final Map<String, List<String>> friendships = new HashMap<>();

    public void makeFriends(String person1, String person2) {
        addFriend(person1, person2);
        addFriend(person2, person1);
    }

命令行输入或输出使用如下样式:

$> vagrant plugin install vagrant-cachier
$> git clone thttps://bitbucket.org/vfarcic/tdd-java-ch02-example-vagrant.git

新术语和重要词语使用粗体。例如,对于出现在屏幕上的菜单或对话框中的词语,表示如下:

“输入查询后,将看到按钮Go,请单击。”

 警告或重要的注意事项。

 

 提示和技巧。

读者反馈

欢迎提供反馈,请将你对本书的看法告诉我们:哪些方面是你喜欢的,哪些方面你不喜欢。读者反馈对我们来说很重要,因为这可以帮助我们推出更符合读者需求的著作。

要给我们提供反馈,只需向feedback@packtpub.com发送电子邮件,并在邮件主题中指出书名。

如果你有擅长的主题,并有志于写书或撰稿,请参阅www.packtpub.com/authors的撰稿指南。

客户支持

购买本社图书后,你将获得各种帮助,让手中图书最大限度地发挥功效。

勘误

虽然我们力图让图书内容准确无误,但错误仍不可避免。如果你在本社图书中发现错误(包括正文和代码),请告诉我们,我们将感激不尽。你这样做不仅可以让其他读者免遭同样的挫折,还可帮助我们改进该书的后续版本。无论你发现什么错误,都请告诉我们。为此,可以访问http://www.packtpub.com/submit-errata,输入书名,单击链接Errata Submission Form,再输入错误详情。提交的勘误得到确认后,将被上传到我们的网站或添加到既有的勘误列表。

要查看已提交的勘误,请访问https://www.packtpub.com/books/content/support,并在搜索框中输入书名,Errata栏将列出你搜索的信息。

打击盗版

网上散布的盗版材料是各类媒体屡禁不绝的问题。在保护版权和许可方面,本社的态度非常严肃。如果你在网上看到本社作品的非法复制品,请马上把网址或网站名告诉我们,以便我们能够采取补救措施。

请通过copyright@packtpub.com与我们取得联系,并提供可疑的盗版材料链接。

感谢你为保护我们的作者提供的帮助,也十分感激对于我们提供有价值内容的能力给予的保护。

问题

只要有与本书相关的问题,都可通过questions@packtpub.com与我们联系,我们将尽力解决。

电子书

扫描如下二维码,即可购买本书电子版。

{%}

目录

  • 版权声明
  • 前言
  • 第 1 章 为何要关心测试驱动开发
  • 第 2 章 工具、框架和环境
  • 第 3 章 红灯-绿灯-重构——从失败到成功再到完美
  • 第 4 章 单元测试——专注于当下而非过往
  • 第 5 章 设计——难以测试说明设计不佳
  • 第 6 章 模拟——消除外部依赖
  • 第 7 章 BDD——与整个团队协作
  • 第 8 章 重构遗留代码——使其重焕青春
  • 第 9 章 功能开关——将未完成的功能部署到生成环境
  • 第 10 章 综述