JMockit 中被 Mocked 的对象属性及方法的默认值

前脚研究完 Mockito 中被 Mocked 的对象属性及方法的默认值, 虽然目今更多的是拥抱着 Mockito, 但总有时对 JMockit 也会挤眉弄眼,谁叫 JMockit 无所不能呢!被 Mockito 的 Mock 对象方法的默认返回值洗脑之后,进而觉察出 JMockit 应该有同样的实现方式。

经过类似的测试,这里不详细列出测试过程,只是在基于前篇的测试中加入 JMockit 的依赖,最新版是 1.36。测试类 MyClassTest 中使用

来构造 MyClass 的 mock 对象 myClass, 其余代码是一样的。相关代码请前往上篇 Mockito 中被 Mocked 的对象属性及方法的默认值 中找。 使用 JMockit 后跑出来的效果如下:

fields ----
integer: 0
array: null
double: null
string: null
optional: null
collection: null
map: null
methods ----
integer: 0
array: [J@64c64813
double: 0.0
string: null
optional: Optional.empty
collection: [], class java.util.Collections$EmptyList
map: {}, class java.util.Collections$EmptyMap

JMockit 对于属于默认值的处理没什么意外。被 Mock 的方法返回值也存在一个映射关系,那就是 jmockit.internal.util.DefaultValues.java, 点开链接,打开源码,看个究竟。其中的映射比 Mockito 还更为明白,此处拒绝贴出 DefaultValues 的源代码。

本文链接 https://yanbin.blog/jmockit-mocked-object-default-field-method-values/, 来自 隔叶黄莺 Yanbin Blog

[版权声明] Creative Commons License 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments