知识卡片
开闭原则保护既有单元测试不被破坏
内容
一个方法通常需要多种测试用例,重要方法测试数可能十几个。若直接改getPrice实现打折,原有 NovelBookTest就要连带大改;按[[三种应对需求变化方案的取舍]]新增OffNovelBook子类,只需 单独写OffNovelBookTest,原测试完全不受影响。发散:遵循开闭原则不是额外负担,而是控制 回归测试范围、让”绿条保持绿色”的直接手段。
参考来源
- 位置:《设计模式之禅(第2版)》第6章《开闭原则》(源文件:_epub-src/text/part0024.html)
- 结论依据:原文指出如果直接修改getPrice方法实现打折逻辑,就需要连带修改原有单元测试类NovelBookTest,而采用扩展子类OffNovelBook的方案后,只需新增OffNovelBookTest、原测试类不受影响,因为"单元测试是孤立测试,只要保证我提供的方法正确就成了"。
- 原始内容:如果我们直接修改getPrice方法来实现业务需求的变化,那就要修改单元测试类……我们重新生成一个测试文件OffNovelBookTest,然后对getPrice进行测试,单元测试是孤立测试,只要保证我提供的方法正确就成了,其他的我不管。