一尘不染

如何使用默认构造函数伪造InitialContext

java

所有,

我正在尝试在一些古老的Java代码中进行一些单元测试(无接口,无抽象等)。

这是一个使用ServletContext的servlet(我假设它是由Tomcat设置的),并且它的数据库信息在web.xml /
context.xml文件中设置。现在,我已经弄清楚了如何制作Fake ServletContext,但是代码已经

 InitialContext _ic = new InitialContext();

遍布整个地方(因此替换它是不可行的)。我需要找到一种方法来使默认的InitialContext()能够做到而_ic.lookup(val)不会引发异常。

我假设有某种方式可以加载context.xml,但是该魔术如何工作,我正在绘制空白。有人有主意吗?


阅读 210

收藏
2020-12-03

共1个答案

一尘不染

您可以使用PowerMock模拟InitialContext的构造并控制其行为。此处记录构造器模拟。

PowerMock测试可能非常混乱且复杂,重构通常是更好的选择。

2020-12-03