0

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
4

1 回答 1

0

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

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

whenNew(A.class)
    .withNoArguments()
    .thenReturn(a);
whenNew(A.class)
    .withArguments(...)
    .doAnswer(call original constructor);
于 2015-10-05T20:52:10.170 回答