[英]How do I mock a class marked final and has a private constructor using jMockit
我想使用JMockit
编写一些基于状态的测试来模拟CSVRecord 。 问题是CSVRecord
是final
(这意味着我必须使用JMockit
CSVRecord's
框架),并且CSVRecord's
构造函数具有程序包私有可见性。
由于它是私有程序包,因此我无法调用new CSVRecord(arg, arg, ...)
,这意味着我永远无法实例化我的模拟。 它的父级CSVParser是唯一可以创建实例的类。
JMockit
是否有应对这种情况的方法?
注意: JMockit
或Mockito
是我们在该项目上使用的唯一框架。 没有其他框架可以接受。 我的偏好是使用MockUp。
如果仅是调用私有构造函数的问题,那么是的,JMockit具有处理此问题的工具。 参见教程
听起来更像CSVRecord
不是CSVRecord
的理想选择。 如果可能的话,针对以内部使用它的另一个公共类为目标的测试将是更好的选择。
否则,JMockit将为Deencapsulation
类提供newInstance
方法。
附带说明,Mockito仅支持基于行为的测试。 JMockit提供了“模型”( MockUp
),但它与编写基于状态的纯黑盒测试不同。
采用:
ConstructorReflection.newInstance
在较新版本的Jmockit中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.