首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >合约测试是否有必要暗示存根?

合约测试是否有必要暗示存根?
EN

Stack Overflow用户
提问于 2012-12-04 05:47:16
回答 2查看 770关注 0票数 1

最近,我读了很多关于合同和协作测试的文章(主要来自J.B. Rainsberger)。为了把它放进去,我开始了一个小项目。

根据我的理解,契约测试的责任是确保实现遵守其接口固有的契约。换句话说,它鼓励利斯科夫替代原则。

模仿一个对象合作者,基本上就是对它进行假设。现在,如果这些假设改变了,会发生什么?如果我这样模拟使用Mockito的合作者(这与存根的作用相同):

代码语言:javascript
运行
复制
 when(collaborator.doSomething(someArgument)).thenReturn(someValue);

当我修改collaborators接口(也就是它的契约)时,我不会注意到这些变化。

因此,我的问题是:当伪造协作者为被测系统提供间接输入时,应该使用存根来防止未被注意到的接口/契约更改,这是正确的吗?

下面是我已经检查过的一些链接:

removing-the-integration-test-scam-understanding-collaboration-and-contract

writing contract tests in java differently

我希望我说得足够清楚,如果不够清楚,我会尽我最大的努力让它变得更加透明。提前感谢你们所有人。

EN

Stack Overflow用户

回答已采纳

发布于 2012-12-04 20:48:02

Stubs和Mock之间有明显的区别。

存根是一个替身,不能改变测试结果。例如,传递给主题的输入参数。

另一方面,mock可能会导致测试失败。它是测试对象间协作性的基础。如果未满足预期的协作,则测试将失败。

因此,在您的问题的上下文中,对系统的间接输入应该是存根。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13692324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档