whenNew
2 つのコンストラクター (1 つは引数なし、もう 1 つは引数あり) がある場合は機能しません。以下のコードの抜粋では、実際のコンストラクターをもう一度呼び出す必要がありますが、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