gpt4 book ai didi

java - 如何在java中模拟类而不创建接口(interface)

转载 作者:行者123 更新时间:2023-11-30 06:02:52 25 4
gpt4 key购买 nike

首先,我不是Java开发人员,我使用的是php。

我对 Java 很好奇,例如,如果我有这样的结构:

interface Ainterface {
public String method();
}

public class A implements Ainterface {
public String method() {
//do something
}
}

public class B {
public String method(Ainterface a) {
a.method();
//do something
}
}

现在,如果我想测试 B 的方法,我可以模拟 a

public class Amock implements Ainterface {
public String method() {
//do something
}
}

并将其注入(inject)到B的方法中。

但是,如果我不想创建界面并且遇到这样的情况:

public class A {
public String method() {
//do something
}
}

public class B {
public String method(A a) {
a.method();
//do something
}
}

有没有办法模拟a或以其他方式测试B的方法?

最佳答案

在 Java 中,您可以使用特定的模拟框架,例如 Mockito并使用它的特定方法 - 例如

A aMock = Mockito.mock(A.class);

当然,这样你只能创建一个非常简单的模拟,它实际上什么也不做,但框架允许你通过提供 when/then 机制来定义应该返回什么特定方法。这样的例子可以是

when(aMock.method()).thenReturn("I am just a fake");

mockito 真的很强大,我无法在这个答案中向您解释整个框架,所以请访问 Mockito 主页和 reference页面来熟悉这一点

Mockito 也是解决方案之一 - 它很受欢迎,但不仅仅是一种解决方案,因此您可以寻找最适合您需求的解决方案

关于java - 如何在java中模拟类而不创建接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53438731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com