《Java单元测试实战》——简化技巧:Java编程技巧之单元测试用例简化方法(4) https://developer.aliyun.com/article/1232242?groupCode=java
五、 简化单元测试用例
1. 利用直接测试私有方法简化单元测试用例
习惯性地,我们通过构造共有方法的测试用例,来覆盖公有方法及其私有方法的所有分支。这种方式没有问题,但有时候显得测试用例比较繁琐。我们可以直接测试私有方法,单独对私有方法进行全覆盖,从而减少对公有方法的测试用例。
被测代码:
原始用例:
简化用例:
2. 利用JUnit的参数化测试简化单元测试用例
有时候我们会发现,同一方法的在不同场景下的单元测试,除了加载的数据不同之外,单元测试用例的代码基本完全一致。我们可以这样分析:虽然单元测试用例的场景不一样——执行代码的分支不一样,调用方法方法的顺序、次数、返回值不一样;但是,其调用的依赖方法的数量是完全一致的;所以,最终写出来的单元测试用例的代码也是完全一致的。这时,我们就可以采用JUnit的参数化测试来简化单元测试用例。
被测代码:
同上一章的测试代码。
原始用例:
同上一章的原始用例。
简化用例:
如上简化用例所示:在资源目录testGetUserWithNormal中创建了两个目录vip和notVip,用于存储相同名称的JSON文件userDO.json和userVO.json,但是其文件内容根据场景又有所不同。
备注:本案例采用JUnit5.0的参数化测试新特性。
后记
《走向卓越工程实践》是一本面向集团一线研发工程师/二层组织技术负责人/ TLM/Tech Lead 的实践指南,意在引导集团技术朝着更卓越先进的水平持续优化和演进,以高质量带动高效率,为研发工程师和技术管理者指明从基础迈向卓越工程的道路。这里,填写了一首词《满江红·卓越工程》,谨此献给卓越工程小组。
《满江红·卓越工程》
夜色朦胧,高楼里、灯如白昼。
揉睡眼,仰天长吼,又熬一宿。
美好生活仍未见,称心工作何时有?
累成狗、秃了少年头,人消瘦。
编单测,纠错谬。核代码,查疏漏。
讲方法,打破加班魔咒。
卓越工程提效率,日常实践争优秀。
从此后、阔步向前行,精神抖。