2015-03-31 110 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");