所有,
我正在尝试在一些古老的Java代码中进行一些单元测试(无接口(interface),无抽象等)。
这是一个使用ServletContext的Servlet(我假设它是由Tomcat设置的),并且它的数据库信息在web.xml/context.xml文件中设置。现在,我已经弄清楚了如何制作Fake ServletContext,但是代码包含
InitialContext _ic = new InitialContext();
遍布整个地方(因此替换它是不可行的)。我需要找到一种方法来使默认的InitialContext()能够执行
_ic.lookup(val)
而不会引发异常。我假设有某种方式可以加载context.xml,但是该魔术如何工作,我正在绘制空白。谁有想法?
最佳答案
您可以使用PowerMock模拟InitialContext的构造并控制其行为。构造函数模拟记录在here中。
PowerMock测试可能非常困惑和复杂,重构通常是更好的选择。