如何验证特定父构造函数的调用?

时间:2014-10-03 14:42:41

标签: java mocking powermock

我有一个儿童类代码 -

public class A extends B {
    public A(User user, UserFilter filter) {
        super(user, filter);
    }

    /* the second possible option
    public A(User user, UserFilter filter) {
        super(user, filter, null);
    }
    */
}

父类 -

public class B {
    private User user;
    private UserFilter filter;
    private QRCode code;

    public B(User user, UserFilter filter) {
        this.user = user;
        this.filter = filter;
    }

    public B(User user, UserFilter filter, QRCode code) {
        this.user = user;
        this.filter = filter;
        this.code = code;
    }
}

我想验证是否只调用了特定的父构造函数。不是super(user, filter, null),而是super(user, filter)。我可以添加字段非常重要,因此检查代码是否为空是不合适的。

我想使用PowerMockito进行验证。

1 个答案:

答案 0 :(得分:1)

public B(User user, UserFilter filter, QRCode code)设为私有,并添加调用它的静态方法。

通过这样做,您将能够使用任何构造函数实例化您的B类。但B的后代将被迫只使用可见的构造函数