試圖將 kotlin 測(cè)試代碼復(fù)制到 Java??紤]以下現(xiàn)有 kotlin 代碼的類和測(cè)試類。open class ClassX( val a: ObjectA, val b: ObjectB, val c: ObjectC) { fun someMethod() {..... }}這是測(cè)試之一class ClassXTest : ClassX( a = mock(), b = mock(), c = mock())試圖在 java 中模仿相同的代碼public class ClassX {private ObjectA a;private ObjectB b;private ObjectC c;public ClassX(ObjectA a, ObjectB b, ObjectC c) { this.a = a; this.b = b; this.c = c;}public void someMethod() {...}}對(duì)于測(cè)試類public class ClassXTest extends ClassX{ public ClassX(ObjectA a, ObjectB b, ObjectC c) { super(a,b,c); }}我的問題是如何在 java 中模仿為 kotlin 中的基類字段設(shè)置的 mock(),如下所示。class ClassXTest : ClassX( a = mock(), b = mock(), c = mock())
1 回答
PIPIONE
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊
您的 Kotlin 代碼定義了一個(gè)子類 ClassXTest,它有一個(gè)不帶參數(shù)的構(gòu)造函數(shù),并使用 3 個(gè)模擬調(diào)用超級(jí)構(gòu)造函數(shù)。
所以如果你想在 Java 中使用相同的方法,你還需要一個(gè)不帶參數(shù)的構(gòu)造函數(shù)并使用 3 個(gè)模擬調(diào)用超級(jí)構(gòu)造函數(shù):
public class ClassXTest extends ClassX {
public ClassXTest() {
super(mock(ObjectA.class), mock(ObjectB.class), mock(ObjectC.class));
}
}
我真的很奇怪為什么要?jiǎng)?chuàng)建一個(gè)子類,而不是僅僅使用現(xiàn)有的類并將 3 個(gè)模擬作為參數(shù)傳遞給其現(xiàn)有的構(gòu)造函數(shù)。
添加回答
舉報(bào)
0/150
提交
取消
