Java 引发异常的PowerMockito调用私有方法失败
我尝试在类Java 引发异常的PowerMockito调用私有方法失败,java,mockito,powermock,Java,Mockito,Powermock,我尝试在类MyClass中模拟以下方法foo: private Class<?> foo(final String str) throws ClassNotFoundException{ return Class.forName(str); } 它不工作并抛出异常java.lang.reflect.InvocationTargetException 但是,如果我将return Class.forName(str)替换为return Boolean.TRUE.getClass
MyClass
中模拟以下方法foo
:
private Class<?> foo(final String str) throws ClassNotFoundException{
return Class.forName(str);
}
它不工作并抛出异常java.lang.reflect.InvocationTargetException
但是,如果我将return Class.forName(str)
替换为return Boolean.TRUE.getClass()代码>在foo
方法中-一切正常
如何告诉PowerMockito
调用失败时抛出异常的方法foo
如果您不需要真正的方法调用,并且可以使用mock-将spy()更改为mock()
MyClass pl=PowerMockito.spy(新的MyClass())
MyClass pl=PowerMockito.mock(MyClass.cla)
你的代码除了spy/mock之外,没有任何变化
如果需要使用real方法调用SPY()
这样做:
MyClass pl=PowerMockito.spy(新的MyClass())
但是,如果我将return Class.forName(str)替换为return
Boolean.TRUE.getClass();在foo方法中,一切都是好的
这是由于1。这叫真正的方法,2。重新运行布尔类。但当您使用anyString()调用时,它会调用real方法并将null作为值传递
读:):)
如果您不需要真正的方法调用,并且可以使用mock-将spy()更改为mock()
MyClass pl=PowerMockito.spy(新的MyClass())
MyClass pl=PowerMockito.mock(MyClass.cla)
你的代码除了spy/mock之外,没有任何变化
如果需要使用real方法调用SPY()
这样做:
MyClass pl=PowerMockito.spy(新的MyClass())
但是,如果我将return Class.forName(str)替换为return
Boolean.TRUE.getClass();在foo方法中,一切都是好的
这是由于1。这叫真正的方法,2。重新运行布尔类。但当您使用anyString()调用时,它会调用real方法并将null作为值传递
读:):)
MyClass pl = PowerMockito.spy(new MyClass());
try {
PowerMockito.when(pl, PowerMockito.method(MyClass.class, "foo", String.class))
.withArguments(anyString())
.thenReturn(Boolean.TRUE.getClass());
} catch (Exception e) {
e.printStackTrace(); // catch ClassNotFoundException
}
try {
PowerMockito.doReturn(Boolean.TRUE.getClass())
.when(pl, PowerMockito.method(MyClass.class, "foo", String.class))
.withArguments(anyString());
} catch (Exception e) {
e.printStackTrace(); // catch ClassNotFoundException
}