PowerMockito验证任意数量的param构造函数调用

时间:2016-03-11 11:52:58

标签: java constructor mockito powermock

我想检查是否使用一组params调用了一个特定的构造函数,并检查params是否正确。

该类使用java(...)的任意参数,如下所示:

public class MyClass{
    public MyClass(Object o, int... params){
        //DOSOMETHING   
    }
}

受测试的类有一个方法:

@RunWith(PowerMockRunner.class) @PrepareForTest(MyClass.class)
public class ClassUnderTest {
    private int[] par;
    public ClassUnderTest(int... params){
        this.par = params;
    }

    public MyClass methodToTest(){
        return new MyClass(null, this.par);
    }
}

我想检查返回的MyClass是否实际上是使用正确的agruments调用的。

我做的是:

whenNew(MyClass.class).withAnyArguments().thenReturn(null);

ClassUnderTest clazz = new ClassUnderTest(0, 1, 2);
MyClass res = clazz.methodToTest();
verifyNew(MyClass.class).withArguments(eq(null), any(int[].class));

但是没有处理这个错误:

java.lang.AssertionError: Wanted but not invoked my.package.MyClass(
    null,
    <any>
);
Actually, there were zero interactions with this mock.

你有任何建议或想法如何测试这个,我想避免使用MyClass的getter ......

1 个答案:

答案 0 :(得分:1)

我解决了问题,只是在PrepForTest我正在测试的类,所以我做了:

@PrepareForTest(ClassUnderTest.class)

而不是

@PrepareForTest(MyClass.class)

星期一,如果我有空闲时间,我会发布更详细的答案