java测试驱动开发笔记

测试驱动的精髓

再給系统添加新功能的时候,先写测试代码。(编写测试代码其实就是在问自己,添加这个功能需要做些什么 《重构,改善既有代码的设计》)

1.理解TDD

TDD是一种简单的流程,要求你先编写测试,再实现代码。这与"编写代码后测试"的传统方法想反。

2.TDD开发历程

TDD的开发过程是“红灯”-“绿灯”-“重构”。这个过程是TDD重要的组成部分。

意思是在代码的周期状态:处于红灯状态时,代码不管用;处于绿灯时,一切代码都能像预期的那样工作,但并不是最佳的;到了重构阶段,我们知道了测试很好的覆盖了各项功能,就可以充满信心的去修改它,让它变得更好。

3.测试方法命名

给测试方法描述性的名称。这样做的好处之一是有助于理解测试的目标。

文中给出了测试方法命名的建议(BDD场景使用):given/when/then

例子:public void whenArrayOutSideThenException();

4.单元测试,功能测试(验收测试)以及集成测试

4.1 单元测试旨在对小型功能单位进行检查。在JAVA中,这些单元就是方法。对于所有外部依赖,注入对其他类,方法或数据库的调用等,都应在内存中完成,这是通过使用模拟对象,存根,间谍,伪造对象和哑元对象实现的。拉杰德发明了一个更通用的属于——测试替身,它涵盖了前述的各种对象。单元测试很简单,易于编写且运行速度很快,在测试中占据分量最大。

4.2 功能测试和验收测试的职责是核实整个应用程序像预期的那样工作。单元测试旨在检查代码内部质量,而功能测试用于确保系统在客户或用户看来能正常工作。其数量通常比单元测试少。

4.3 集成测试旨在核实各个单元,模块,应用程序乃至系统妥善的集成在一起。你可能有一个前端应用程序,它使用后端API,而后端API又与一个数据库通信。这种情况下,集成测试的职责是核实这三个不同的组件被紧密的集成在一起,能彼此通信。因此集成测试唯一的职责是确认所有组件能够很好的协同工作,所以其数量是最少的。

5.对单元进行测试时,不要过多考虑它将调用的方法或类

专注于一个单元,并尽量忽略其内部的工作原理。很多情况下,我们编写规范时都没有验证最终结果是否正确,而检查待实现的方法是否调用了辅助类的正确方法。在实际工作中,你将与小组成员协作开发项目,因此学会如何专注于分配给你的任务,并且相信他人的代码能够像预期那样工作至关重要。

你可能感兴趣的:(阅读书籍)