[英]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.