gpt4 book ai didi

java - 在java中模拟类变量值的问题

转载 作者:行者123 更新时间:2023-12-01 18:57:00 26 4
gpt4 key购买 nike

我有一个类,它的私有(private)类变量初始化如下

public class MyClass{

private BusinessObject businessObject = BusinessObjectGenerator.getBusinessObject();

public MyClass(){

}

public Object myMethodToTest(){
return businessObject.getObject();
}
}

现在,我正在尝试对 myMethodToTest 进行单元测试,我想发送一个模拟对象来代替 businessObject。我使用mockito进行模拟,并使用spy(new MyClass())进行部分模拟,但在模拟获取businessObject的调用时遇到问题。1.是否可以模拟对businessObject的调用?如果是这样怎么办?2. 如何重构此代码以在编写单元测试时提供帮助。任何指向此的资源都会有很大帮助。

谢谢!

最佳答案

要正确重构此代码,您需要:

private BusinessObject businessObject;

public void setBusinessObject(BusinessObject instance) {
businessObject = instance;
}

private BusinessObject getBusinessObject() {
if (businessObject == null) {
// represents existing implementation in original code sample
businessObject = BusinessObjectGenerator.getBusinessObject();
}
return businessObject;
}

/* rest of your code */

现在您可以在测试站点将您的模拟注入(inject)到类中。

我建议使用像Guice这样的框架进行依赖注入(inject)来做到这一点。 。这将值得您花时间。

关于java - 在java中模拟类变量值的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13638713/

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