gpt4 book ai didi

java - 使用 JMockit 模拟类

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:51:36 25 4
gpt4 key购买 nike

我是 Mocking 框架的新手。我现在正在开发的框架是 JMockit。我有疑问。如果我对这个话题的理解很差,请原谅我。

我有一个扩展抽象类的类 A。类是这样的:

class A extends AbstractClass{
private B b = UtilClass.getBean("b");
private C c = UtilClass.getBean("c");

.........
.........
.........

}

UtilClass 是这样的:

public final class UtilClass{
private static UtilContext context = new UtilContext();
//getBean method which returns a bean object
}

我想模拟 getBean 方法。所以为了模拟这个方法,我必须模拟 UtilContext 类。如果它正在实例化其他一些类,那么我也必须模拟它。这样我必须模拟很多类,这不是一个好主意。请帮助我。

最佳答案

如果你只需要访问 UtilClass 中的 getBean 方法,你可以模拟整个 UtilClass 并使用 $clinit 方法禁用它的静态初始化(它不会禁用已解析的静态初始化在编译时(常量):

new MockUp<UtilClass>() {
@Mock
void $clinit() {
//disable static initialization
}

@Mock
public static SomeType getBean(String s) {
if("b".equals(s)) return new B();
if("c".equals(s)) return new C();
...
}
};

关于java - 使用 JMockit 模拟类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11841532/

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