1 回答

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊
編輯:改寫答案以使其更易于閱讀。
應(yīng)該由 PowerMockito 處理的類需要在
@PrepareForTest
注釋中聲明。如果注釋用于創(chuàng)建模擬,則所有未在注釋中聲明的帶注釋的類
@PrepareForTest
都由 Mockito 創(chuàng)建。如果注釋用于創(chuàng)建模擬并被
MockitoAnnotations.initMocks(this);
調(diào)用,這顯然會(huì)導(dǎo)致聲明被覆蓋,所有模擬都由 Mockito 創(chuàng)建。(來源:https ://groups.google.com/forum/#!topic/powermock/yPBey4hr7IU )Mockito 無法處理靜態(tài)或最終方法。
模擬操作可能會(huì)無提示地失敗。
你的問題的根源是這HttpClientBuilder#setServiceUnavailableRetryStrategy
是一個(gè)最終的方法,因此不能被 Mockito 處理。
解決方案是 Mock ofHttpClientBulder
必須由 PowerMockito 處理。按照1.
它的需要在@PrepareForTest
注解中聲明。
@PrepareForTest({ HttpClients.class, HttpClientBuilder.class, Sample.class})
如果你想使用注釋來創(chuàng)建模擬,你不能調(diào)用
MockitoAnnotations.initMocks(this);
(見2.
/我用最新的 powermockito 版本(1.7.4 / 2.0.2)驗(yàn)證了這個(gè)問題)
否則你必須手動(dòng)創(chuàng)建模擬。
HttpClientBuilder clientBuilderMock = PowerMockito.mock(HttpClientBuilder.class);
添加回答
舉報(bào)