我正在寻找以下单元测试用例的解决方案/模式。单元测试模式
案例:
让我们假设我们有三类,A,B,C每一个方法。 A的方法调用B的方法调用C的方法。所以,A-> B-> C。每种方法都有一个输入(方法A的输入A,输入B,输入C)。将得到的调用方法A的输出将是一个树结构,例如:
根(从方法A创建) - 节点B(从方式B创建) - 节点C1 - 节点C2 (都是从方法C创建的)
对于我来说,单元测试是关于测试单独输入方法的输出。所以,我们会为上面的每个方法编写单元测试。因为这些测试是独立编写的,所以在为方法A编写单元测试时,我们会模拟方法B,并且在编写方法B的单元测试用例时模拟方法C.
到目前为止,一切都很好,我们可以编写对每种方法的输出的期望,以确保树结构得到尊重。
问题:
现在,让我们添加另一个类称之为B法,使我们也有以下的调用链:D-> B->℃。得到的根树应该是这样的:
- 根d
- 节点B
- 节点C1
- 节点C2
- 节点B
在发展过程中,有人意识到要求方法A被误解了,树结果应该是这个样子的:
- 根
- 节点B
- 节点C
- 节点B
令人高兴的是,开发者将改变方法C,以便输出只返回一个节点而不是两个。他会改变单元测试,以反映这些变化。 然而,方法D的要求不应该改变,并且该方法的输出应该仍然具有节点C1和节点C2。
问题:
你怎么会写单元测试,以使第二开发人员已经惊动突破,他将相继推出了针对方法d的变化?我宁愿避免在这里看来最适合的集成测试。
谢谢。
单位是指“一个逻辑单位”。在这种情况下,您在D或A上测试的行为部分由C定义,因此请将其包含在您的单元中。 – dascandy 2013-04-25 10:51:33