如何解决模拟复杂的 Java 对象
有没有办法模拟一个非常复杂的对象,在类中静态初始化,而不修改源代码?
代码看起来像这样。
public class SomeType {
private static final ComplexType TYPE = new ComplexType();
public SomeType() {}
public Object process(int id,String content) {
...
TYPE.something();
...
}
}
试图通过调用来测试 SomeType
类的行为
new SomeType().process(1,"<some text>");
需要以某种方式模拟 ComplexType
对象,该对象在其定义中静态初始化了许多其他复杂对象,以及初始化期间的网络密集型操作。因此,mock()
或 spy()
不起作用,因为 ComplexType
对象在引用 SomeType
类时被初始化。看起来,要模拟 ComplexType
对象,需要准备其所有复杂的依赖项,这使得测试代码变得复杂。
建议的另一种方法是通过反射修改 static final
字段 TYPE
。但是这也不行,因为它发生在TYPE
的初始化之后,所以初始化引起的错误已经发生了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。