PowerMockito 验证任意数字参数构造函数调用

PowerMockito verify a arbitrary number param constructor call

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

class 像这样使用 java ( ... ) 的任意参数:

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

正在测试的 class 有一个方法可以做到这一点:

@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 是否实际上是用正确的参数调用的。

我做的是这样的:

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 的 getters.....

我只是 PreparingForTest 我正在测试的 class 就解决了这个问题,所以我做了:

@PrepareForTest(ClassUnderTest.class)

而不是

@PrepareForTest(MyClass.class)

周一如果有空我会post更详细的回答