2015-03-31 100 views
0

這裏是一個存在的類和方法,我試圖嘲弄:Junit的私人領域

public class ClassUndertest{ 

    private Object field_private = new Object(); 

    public Object method_public() 
    { 
     field_private.method(); 
     method_private(); 
    } 


    private Object method_private() 
    { 
     .... 
     return Object; 
    } 

} 

我的測試中部分地嘲笑ClassUndertest:

ClassUndertest partialmockinstance = PowerMock.createPartialMock(ClassUndertest.class, "method_private"); 

當我運行的模擬對象:

partialmockinstance.method_public(); 

field_private不是初始化的,所以測試會拋出空指針。

有沒有辦法繞過這個問題?

回答

0

當構造函數被調用時,字段被初始化。我認爲PowerMock的默認行爲是而不是調用任何構造函數。

隨着看的javadoc我會試試下面的方法來代替:

ClassUndertest partialmockinstance = PowerMock.createPartialMockAndInvokeDefaultConstructor(ClassUndertest.class, "method_private");