PowerMockito whenNew不能与多个构造函数一起使用

时间:2015-10-05 20:39:24

标签: java junit mockito powermockito

如果我有两个构造函数,那么

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

1 个答案:

答案 0 :(得分:0)

(1)在类操作之前保持类newInstance(int)方法

(2)尝试定义两个构造函数。

whenNew(A.class)
    .withNoArguments()
    .thenReturn(a);
whenNew(A.class)
    .withArguments(...)
    .doAnswer(call original constructor);