在编写单元测试时,对于单元与之交互的每个对象,我正在采取这些步骤(从我对JBrains的集成测试的理解中偷来的是一个骗局):
当我决定重构一个在步骤2中模拟了响应的对象时,我的问题出现了.如果我改变了对象响应调用的方式,那么其他对象对该调用的测试都不会因为它们都被模拟而失败与旧风格相匹配.你如何让嘲笑与他们嘲笑的对象保持同步?这是最好的做法吗?或者我完全误解了事情并且做错了吗?
我就是这样做的。
假设我必须更改接口方法的响应foo()。foo()我收集了存根在列表中的所有协作测试。我收集 method 的所有合同测试foo(),或者如果我没有合同测试,我会收集foo()列表中所有当前实现的所有测试。
现在我创建一个版本控制分支,因为它会很混乱一段时间。
我@Ignore(JUnit 的说法)或以其他方式禁用存根的协作测试foo(),并开始一一重新实现和重新运行它们。我让他们全部通过。我可以在不接触foo().
现在,我重新实现foo()一一实现的对象,其预期结果与存根的新返回值相匹配。请记住:协作测试中的存根对应于合同测试中的预期结果。
此时,所有协作测试现在都假设来自 的新响应foo(),并且合同测试/实施测试现在期望来自 的新响应foo(),因此一切都应该正常工作。(TM)
现在整合你的分支并给自己倒点酒。
| 归档时间: |
|
| 查看次数: |
373 次 |
| 最近记录: |