2014-10-03 56 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

相關問題