如何以正确的姿势使用 mockito

2019 年 1 月 23 日
 STRRL

背景:本人 spring curd 程序员,平常在写测试的时候,都是拍脑袋想一个测试用例,然后手写 expected,然后和实际运行结果 actual 进行比较,这么来测的。 平常的时候一般有 bean 就直接 autowird 进来了

今天在写测试的时候,有一个 bean 不太好注入。然后想到了当初没怎么研究的 mockito,一顿 when().thenReturn()操作以后,达到效果了

完事了以后发现,这个东西这么用好像不是正确的使用方式,再仔细一看,mockito 可以记录行为 behavior,然后再 verify()。

官方给的示例是调用了一次被 mock 的对象的方法 A,然后再 verify 一次这个方法 A 确实被调用了。我一脸黑人问号,方法 A 被调用已经明确的写在测试类里了,肯定是被调用了,没有看明白 verify 有什么意义。。

而且被 mock 的类里的方法也不会执行的,code coverage 咋算?
啊 说了这么多总结一下:
我现在使用 mockito 的方式是:mock 的对象不是被测试的对象,mockito 相当于只提供一个 fake value。
但是看样子 mockito 的正确使用方式是:mock 一个被测试的对象,然后对这个对象进行各种操作,然后 verify()历史记录..?

求大佬点明。。

另:在设计时如何考虑到可测试性? TDD 吗?有没有这方面的书推荐?

1098 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/529944

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX