簡體   English   中英

模擬靜態方法

[英]Mocking Static Methods

正如我做了一些研究,我發現PowerMock能夠模擬靜態java方法。

有人能解釋(技術上)什么是PowerMock與JUnit不同的東西和其他不能或不能的東西? 還有為什么靜態方法在嘗試模擬時會導致問題?

謝謝

http://blog.jayway.com/2009/05/17/mocking-static-methods-in-java-system-classes/

為了模擬實例方法,您可以簡單地在子類中覆蓋它。 你不能用靜態方法做到這一點,因為沒有“靜態多態”。

Powermock可以做到這一點,因為它使用字節碼,而其他流行的框架依賴於多態並使用CGLIB創建子類。

從鏈接:“基本上所有標准的模擬框架都使用CGLib來創建一個模擬對象,這意味着它們基於一個層次模型(CGLib創建一個類的子類,在運行時測試,這是實際的模擬對象)而不是PowerMock通過委托給MockGateway的字節碼操作來使用的委托模型。“

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM