2014-10-03 37 views
1

我有子类的代码 -如何验证特定父构造函数的调用?

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来做验证。

+0

因此,您正在尝试测试以确保您的'A'Ctor是“正确的”,并且没有人更改ctor代码? – 2014-10-03 14:44:36

+0

我知道Mocktio.verify你可以做到这一点,但对象必须被嘲笑。 – StackFlowed 2014-10-03 14:44:47

+0

设计和测试,这感觉过分指定。你可以尝试控制你的代码和测试太多。为什么你需要一个特定的构造函数?该物体的行为不应该足够吗? – markspace 2014-10-03 14:45:51

回答

1

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

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

+0

这不是一个解决方案。我只需要测试代码。我不能做任何重构的东西。 – barbara 2014-10-03 15:05:08

相关问题