類結構看下面喜歡:如何在Junit中模擬子類的構造函數?
class A {
protected String a;
protected String b;
A(String b1) {
new A("A111", b1);
}
A(String a1, String b1) {
a = a1;
b = b1;
}
}
class B extends A {
B(String b) {
super("A", b);
}
}
我需要編寫JUnit測試案例,需要嘲笑構造爲A類,以便每當對象爲B類需要創建A類,然後模擬構造應該得到調用和從模擬構造函數返回對象。
我嘗試以下操作:
new MockUp<A>() {
@Mock
public void $init(String b1) {
new A("A11111111", b1);
}
};
但在嘲笑構造函數創建的對象沒有得到回報。
我不明白你的要求。你能解釋一下你想做什麼以及想要測試什麼嗎? – Tunaki
看起來好像你想將超類構造函數從子類中分離出來,並且只測試子類的邏輯(通過模仿超類)?但事情是這樣的:構造函數不會真的返回對象 - 當你調用super()時,你不會將它分配給任何東西,因爲它在'this'上運行......所以你不能「調用並返回對象從模擬構造函數「在這種情況下。 – dcsohl
我想模擬單參數化構造函數和模擬構造函數,我想創建使用兩個參數化構造函數的對象,並返回相同的對象供進一步使用。 – Abhishek