我正在为以下单元测试用例寻找解决方案/模式。
案子:
假设我们有三个类,A、B、C,每个类都有一个方法。A的方法调用B的方法,B的方法调用C的方法。所以,A->B->C。每种方法都有一个输入(方法 A 的输入 A,输入 B,输入 C)。调用方法 A 的结果输出将是一个树结构,例如:
根(从方法 A 创建) -- 节点 B(从方法 B 创建) -- 节点 C1 -- 节点 C2(都从方法 C 创建)
对我来说,单元测试是关于孤立地测试方法输入的输出。因此,我们将为上述每种方法编写单元测试。因为测试是独立编写的,所以我们在为方法 A 编写单元测试时模拟方法 B,在为方法 B 编写单元测试用例时模拟方法 C。
到目前为止,一切都很好,我们可以在每个方法的输出上写入期望值,以确保结果树结构得到尊重。
问题:
现在让我们添加另一个调用方法 B 的类,这样我们也有以下调用链:D->B->C。生成的根树如下所示:
- 根 D
- 节点 B
- 节点 C1
- 节点 C2
- 节点 B
在开发过程中,有人意识到方法 A 的需求被误解了,树的结果应该是这样的:
- 根 A
- 节点 B
- 节点 C
- 节点 B
令人高兴的是,开发人员会更改方法 C,以便输出仅返回一个节点而不是两个。他将更改单元测试,以使其反映这些更改。但是,方法 D 的要求不应该改变,并且该方法的输出应该仍然有节点 C1 和节点 C2。
问题:
您将如何编写您的单元测试,以便第二个开发人员会被提醒他将为方法 D 引入的重大更改?我宁愿避免看起来最适合这里的集成测试。
谢谢。