所有,

我正在尝试在一些古老的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测试可能非常困惑和复杂,重构通常是更好的选择。

09-03 20:00