考虑以下事件序列:
- 你编写了一个函数
A()
来完成一个工作单元 - 您为函数 A() 编写测试以确保不存在错误
- 您编写
B()
使用函数的函数A()
- 您为功能编写了一个测试
B()
以确保不存在任何错误
4.1 功能B()
覆盖功能A()
的测试结果您至少有 2 个测试涵盖了一些相同的功能
问题 1:一A()
开始就为函数编写测试值得吗?
- 你写了很多代码
- 你编写了一个巨大的回归测试来测试程序的端到端功能
6.1 这个单一的回归测试有效地重复了绝大多数已经编写的测试
问题 2:按照这些步骤,代码包含许多测试,这些测试不止一次地涵盖了同一件事。有没有避免这种情况的技术?
认为:
出于这个问题的目的,请假设 B 做了两件事,其中一件是 A
void performLifeChoice() { // B()
if (timeIsRight) {
askForPromotion(); // A()
} else {
goBackToSchool();
}
}