我知道我們可以用PowerMock來嘲弄使用核心Java庫的靜態方法嗎?Jmockit.Want理解它是如何在內部完成的?我們在測試用例本身中定義了模擬類(儘管在每個框架中都有不同的方法來創建模擬類,例如在Jmockit中使用期望語法),但這些框架必須定義自定義類加載器,通過它們必須在測試用例本身內部尋找這個類的定義。 它是一個猜測。不確定它是否正確?但即使我是正確的,類加載器hirerchy的優先是boootstraploader然後applicationclassloader比customerclassloader。 那麼它如何從customerclassloader而不是applicationclassloader中選擇?靜態方法如何在JMockit,PowerMocks等任何Mocking Framework中被模擬?
3
A
回答
5
JMockit和其他較新的框架基於Java 1.5 Instrumentation框架。這使您可以重新定義私有,靜態和最終方法。即使沒有參數構造函數也可以重新定義。
這些框架使用Java代理,它是一個可插入的庫,運行嵌入在JVM中,攔截類加載過程並可幫助檢測類的字節碼。
您可以查看深度的Java儀器和http://jmockit.googlecode.com/svn/trunk/www/about.html
相關問題
- 1. 如何使用JMockit模擬非靜態方法1.31
- 2. 如何在Java中使用jmockit來模擬靜態鏈接方法
- 3. 如何用mockito模擬靜態方法?
- 4. 用JMockit模擬私人靜態字段?
- 5. 如何在私有靜態方法中模擬第三方類?
- 6. 如何在JMockit中模擬一個方法?
- 7. 如何在JMockit模擬實例中保留方法註釋
- 8. 在JMockit中模擬被測試的類的私有方法
- 9. 在jmockit中模擬被測試類的私有方法
- 10. 如何在jmockit中模擬創建
- 11. 模擬靜態方法
- 12. PHPSpec:模擬靜態方法
- 13. 模擬靜態方法
- 14. 如何在最終類中模擬靜態方法
- 15. 如何在Java類中模擬特定的靜態方法?
- 16. mockito和powermocks注入模擬
- 17. 無法使用JMockit模擬靜態調用
- 18. JMockit - 期望和靜態方法
- 19. 如何在編寫靜態方法的junit時從靜態方法中模擬實例方法調用?
- 20. JMockit中從不(模擬)的等效
- 21. Spock Mocking - 我的方法調用值沒有被模擬
- 22. 如何使用URLHelp模擬靜態類中的靜態方法? (Moq)
- 23. 如何重置Groovy中的模擬靜態方法?
- 24. Java如何模擬java中的對象和靜態方法?
- 25. 如何用easymock模擬類中的靜態方法?
- 26. 如何在投擲異常內模擬Crashlytics靜態方法
- 27. JMockit:修改模擬方法的參數
- 28. 來自FacesContext的Jmockit模擬addMessage方法
- 29. 如何使用jMockit模擬原生方法
- 30. 如何使用JMockit模擬接受Closure參數的Groovy方法?