作用:
1,从代码层面去测试程序是否可靠
2,重构代码时,保证了输入和输出的正确性
3,单元测试,可以保持功能的颗粒度相对较小
TDD:
Test Driven Development 测试驱动开发
测试代码先行,通过需求分析,设计测试用例。通过丰富的测试用例,来编写单元测试代码。通过完整并且健壮的单元测试再进行功能的开发。这样功能代码则是可靠的,并且在方法修改后,可以通过单元测试反复验证代码的可靠性。但也会引发一些问题,单元测试代码通常是功能代码的两倍之上,会增加相当大的工作量。在方法约定发生改变时,相应的单元测试也需要进行修改。
测试先行
将需求分解,针对每一个小的单元设计测试用例,编写测试代码实现业务代码
实现业务代码,并让业务代码通过测试重构代码
将业务代码进行重构,优化业务代码
KeyTips:
- 保持单元测试的独立性
- 不要滥用断言(Assert)
- 每个测试只有一个逻辑性的断言(Assert)
- 一次单元测试只测试一个模块
- 剔除外部服务和状态,不依赖于过多的服务
- 保持单元测试名称的清晰以及一致性
- 单元测试不是覆盖所有的手动测试
方法类型:
无引擎交互
引擎交互(数据库交互)
Mock数据
引擎交互(增/改)
Assert 逻辑
清楚Mock数据(删除)