如何对枚举类型实现的单例模式进行mock

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何对枚举类型实现的单例模式进行mock相关的知识,希望对你有一定的参考价值。

参考技术A 最近在工作中使用了用枚举实现的单例,那么如何对该种单例模式实现mock呢?

单例类如下(Singleton.class):

使用该单例类的类如下(SingletonHelper.class) :

相应的测试类如下(SingletonHelperTest.class):

此处先使用Whitebox.setInternalState对Singleton的字段"INSTANCE"进行反射,映射为singleton这个mock对象,后续就可以利用singleton对该单例类里面的方法进行mock了。

注意: 对max方法mock时的返回值returnsFirstArg(),是指使用调用该方法的第一个入参作为返回值,这种用法在mockito 1.9.5版本之后支持,以前的版本要想实现该方式必须手动实现Answer匿名类。

以上是关于如何对枚举类型实现的单例模式进行mock的主要内容,如果未能解决你的问题,请参考以下文章

枚举实现单例避免被反射破坏的原因

java GOF23设计模式-单例模式-枚举实现单例模式图(枚举是天然的单例)

单例模式总结

2020-7-23 枚举实现单例模式和取代判断

通过枚举方式的单例是惰性初始化的吗?

Java:Effective java学习笔记之 用私有构造器或者枚举类型强化SIngleton属性