有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java PowerMockito whenNew不能与多个构造函数一起工作

如果我有两个构造函数(一个没有参数,一个有参数),那么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) 个答案

  1. # 1 楼答案

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

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

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