加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

单元测试 – TDD如何处理嘲笑对象的变化

发布时间:2020-12-14 00:47:47 所属栏目:百科 来源:网络整理
导读:在单元测试中,对于单元交互的每个对象,我正在采取这些步骤(从我对JBrains的 Integration Tests are a Scam的理解中窃取): 在本机中编写一个测试,以确保它向协作对象发送正确的调用和参数 在单元中编写一个测试,确保它处理来自协作对象的所有可能的响应.这些
在单元测试中,对于单元交互的每个对象,我正在采取这些步骤(从我对JBrains的 Integration Tests are a Scam的理解中窃取):

>在本机中编写一个测试,以确保它向协作对象发送正确的调用和参数
>在单元中编写一个测试,确保它处理来自协作对象的所有可能的响应.这些响应都是嘲笑的,因此该单元被隔离测试.
>在协作对象中写一个测试,以确保它接受调用和参数.
>写测试以确保每个可能的响应都被发回.

当我决定重构在第2步中嘲笑的对象时,我的问题来了.如果我改变对象响应一个调用的方式,其他对象对该调用的测试都不会失败,因为它们都被嘲笑匹配旧风格.你如何保持嘲讽与他们嘲笑的对象最新?这是最好的做法吗?还是我完全误解了事情,做错了?

我这样做

假设我必须更改接口方法foo()的响应.我收集列表中存根foo()的所有协作测试.我收集方法foo()的所有合同测试,或者如果我没有合同测试,我会收集所有当前实现的foo()的所有测试.

现在我创建一个版本控制分支,因为它会混乱一段时间.

我@Ignore(JUnit说话)或以其他方式禁用stub foo()的协作测试,并开始重新实现并重新运行它们.我让他们过去了我可以这样做,而不用触摸任何生产实现的foo().

现在,我重新实现了实现foo()的对象,其中预期的结果与存根的新的返回值匹配.记住:协作测试中的存根对应于合同测试中的预期结果.

在这一点上,所有协作测试现在都假设来自foo()的新响应,合同测试/实现测试现在期待来自foo()的新响应,所以It Should All Just.

现在整合你的分支,倒一些酒.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读