背景:本人 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 吗?有没有这方面的书推荐?