1

试图将 kotlin 测试代码复制到 Java。考虑现有 kotlin 代码的以下类和测试类。

open class ClassX(
        val a: ObjectA,
        val b: ObjectB,
        val c: ObjectC
) {
  fun someMethod() {
.....
  }
}

这是其中一项测试

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() {
...
}

}

对于测试类

public class ClassXTest extends ClassX{
 public ClassX(ObjectA a, ObjectB b, ObjectC c) {
    super(a,b,c);
 }
}

我的问题是我如何在 java 中模仿在 kotlin 中为基类字段设置的 mock(),如下所示。

class ClassXTest : ClassX(
        a = mock(),
        b = mock(),
        c = mock()
)
4

1 回答 1

3

您的 Kotlin 代码定义了一个子类 ClassXTest,它有一个不带参数的构造函数,并使用 3 个模拟调用超级构造函数。

因此,如果你想在 Java 中也一样,你还需要一个不带参数的构造函数,并使用 3 个模拟调用超级构造函数:

public class ClassXTest extends ClassX {
    public ClassXTest() {
        super(mock(ObjectA.class), mock(ObjectB.class), mock(ObjectC.class));
    }
}

不过,我真的很想知道为什么要创建一个子类,而不是只使用现有的类并将 3 个模拟作为参数传递给其现有的构造函数。

于 2019-08-18T06:36:36.107 回答