2016-03-15 54 views
1

我有一個靜態方法的類,在靜態方法內部我創建一個不同類的實例並將其保存在地圖中。我需要爲這種方法編寫單元測試。什麼是最好的方式來做到這一點?如何使用PowerMockito在靜態方法內模擬新的類實例

例如:

public class MyClass { 

public static synchronized void method (String str1, String str2, Object obj){ 

    do something..... 

     DifferentClass dc = new DifferentClass(str1,str2,obj); 
     dc.methodCall(); 

    do something..... 

} 

} 

試圖用做:

DifferentClass dc = PowerMockito.mock(DifferentClass.class); 
     PowerMockito.whenNew(DifferentClass.class).withArguments(str1,str2,obj).thenReturn(dc); 

,我在 dc.methodCall獲得空指針異常();

謝謝

回答

2

確保您有MyClass@PrepareForTest。 此外,我建議使用withParameterTypes。這不是強制性的,但它有助於避免一些錯誤。

0

嘲笑可能無法正常工作。在withArguments()方法調用中使用Powermockito.anyString()或類似的東西(我不確定正確的版本)。不要使用這樣的字符串。

+0

我用withArguments(Mockito.anyString(),Mockito.anyString(),Mockito.anyObject()),它的工作原理。謝謝。 – Liat

相關問題