2016-05-18 134 views
0

我有一個既有靜態方法又有非靜態方法的類,並且希望爲其編寫單元測試用例。 ClassA的{如何使用Powermockito在同一類中嘲諷靜態和非靜態方法

static getInstance() 
{ 
    // to do logic 
} 

void log() 
{ 
    system.out.print(); 
} 
} 

而且測試用例ClassA的是

ClassTest 
{ 
    public void setup() 
{ 
     PowerMockito.mockStatic(ClassA.class); 
     mockA = PowerMockito.mock(ClassA.class); 

     Mockito.when(ClassA.getInstance("user")).thenReturn(mockA); 
     Mockito.doNothing().when(mockA).log(Mockito.anyString(), Mockito.anyString(), Mockito.any(Exception.class), Mockito.anyMap()); 

    enter code here 

} 
} 

當我打電話日誌方法,我收到例外。我們如何嘲笑這個?

回答

1

嚴重的回答:不要那樣做

只需避免編寫需要PowerMock的生產代碼;例如,因爲您正在調用靜態方法。

通常,「需要PowerMock」直接轉化爲:您的設計需要改進!

你會很快發現PowerMock產生了更多的問題,它正在解決。因此:避免使用它。

+0

另外,我建議如果你先寫產品代碼然後試着去測試一下它,那麼你的錯誤順序就是錯誤的。首先嚐試編寫測試,看看你是否無法獲得這個測試 - 這會讓你的生產代碼變得更加簡單,清晰並且容易測試。 – unigeek

相關問題