簡體   English   中英

Easymock:如何在沒有可見性的情況下模擬對受保護方法的調用

[英]Easymock: How to mock call on protected method with no visibility

我正在使用apache httpclient-4.0.1從我的應用程序進行Rest調用,在我嘗試為此創建單元測試之前,它們都工作正常。 我正在使用easymock ,當我嘗試模擬DefaultHttpClient.execute(HttpUriRequest) ,出現以下錯誤。

java.lang.IllegalStateException: missing behavior definition for the preceeding method call createHttpContext()

我已經查看了代碼,似乎在execute(HttpUriRequest)方法上調用了此方法( createHttpContext() ),但它是protected方法,因此我無法看到它。

那么,您如何模擬這個電話?

原則上,您應該只模擬SUT在其協作者上調用的方法。 如果您需要模擬未由SUT直接調用的內容,則說明您做錯了什么。

如果問題是您需要模擬靜態調用,則有幾種解決方案。

  • 將靜態調用提取到SUT中的其他方法,並測試SUT的部分模擬版本(僅模擬完成靜態調用的新方法)。 使用Easymock進行部分模擬
  • 使用PowerMock並直接模擬靜態調用。

暫無
暫無

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

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