whenNew
就无法工作 - 一个没有,一个有参数。在下面的代码摘录中,我需要第二次调用真正的构造函数,但我得到了NullPointerException
。
@RunWith(PowerMockRunner.class)
public class UtilTest {
@Test
public void test()throws Exception {
A a= new A();
a.setI(10);
whenNew(A.class).withNoArguments().thenReturn(a);
UtilTest test= new UtilTest();
test.testA();
}
private void testA(){
A a1= new A();
System.out.println(a1.getI());
A a2= new A(50);
System.out.println(a2.getI());
}
}
class A{
int i=1;
public A(){}
public A(int i){
this.i=i;
}
public void setI(int i){
this.i=i;
}
public int getI(){
return this.i;
}
}
输出
10
java.lang.NullPointerException
答案 0 :(得分:0)
(1)在类操作之前保持类newInstance(int)方法
(2)尝试定义两个构造函数。
whenNew(A.class)
.withNoArguments()
.thenReturn(a);
whenNew(A.class)
.withArguments(...)
.doAnswer(call original constructor);