Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何验证特定父构造函数的调用?_Java_Mocking_Powermock - Fatal编程技术网

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

Java 如何验证特定父构造函数的调用?,java,mocking,powermock,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 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(用户,筛选器,null)
而是
super(用户,筛选器)
。我可以添加字段,这一点很重要,所以为代码检查null是不合适的

我想用
PowerMockito

public B(User-User,UserFilter-filter,QRCode-code)
私有化,并添加调用它的静态方法


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

,因此您正在尝试测试以确保您的
A
ctor是“正确的”,并且没有人更改ctor代码?我知道Mocktio。请验证您可以这样做,但必须模拟对象。设计和测试,这感觉太过指定了。你可以尝试控制你的代码和测试太多。为什么需要一个特定的构造函数?对象的行为还不够吗?@markspace,因为我之后的人可以更改我的代码。我想确保只调用特定的
ctor
。@barbara这正是过度指定的测试所做的。这不是解决方案。我只需要测试代码。我不能做任何重构的事情。