当前位置: 首页 > 面试题库 >

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

逑景铄
2023-03-14
问题内容

所有,

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

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

 InitialContext _ic = new InitialContext();

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

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


问题答案:

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

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



 类似资料:
  • 问题内容: 默认构造函数到底是什么?你能告诉我以下哪个是默认构造函数,它与其他构造函数有何不同? 问题答案: 他们都不是。如果定义,则不是默认值。 除非你定义另一个构造函数,否则默认构造函数是自动生成的无参数构造函数。任何未初始化的字段都将设置为其默认值。对于你的榜样,它看起来像这样假设的类型String,int以及int,那类本身是公共的: 这与 完全没有构造函数。但是,如果定义至少一个构造函数

  • 为什么: 如果一个类不提供任何然后在编译时由编译器给出,但是如果一个类包含,那么默认构造函数不是由编译器提供。 我正在编译下面的代码。它给出了编译错误。 代码: 控制台错误: 当我只调用。工作正常。但是当您想使用参数化构造函数调用

  • 我分配给类的属性是: 我需要设置ISSOLD,并敦促其设置为false。这就是我创建默认构造函数的原因。但是我使用Builder()来设置类字段,并且在某个地方使用getter/setter来设置属性。 我的要求是将isPurpressed/IsSoldOut设置为True/False,但不能为NULL。 请指导我如何才能做到这一点。

  • 问题内容: 我知道我在这里问一些严重的101问题… 我有一些课,还有一个延伸课。在我有一个构造函数,它接受一组参数,并对其字段进行设置。派生类(例如)通常不需要进行修改。现在我的IDE给我 “ Foo中没有默认的构造函数” 。从一点点谷歌搜索,这似乎是因为“构造函数没有继承”。因此,一切都很好,但是我现在如何使它工作而不在每个派生类中复制此构造函数?我假设有一个更合理的方法? 问题答案: 使用构造

  • 问题内容: 不知何故,在下面的Node类中,and变量在Node的所有实例之间共享。 有什么办法可以让我继续使用构造函数参数的默认值(在这种情况下为空列表),但要同时获取它们和拥有其自身的变量以及变量? 我正在使用python 3.1.2。 问题答案: 可变的默认参数通常不会执行您想要的操作。相反,请尝试以下操作:

  • 图 6.1 time1.cpp 中的构造函数将 hour、minute 和 second 初始化为 0(即军用时间午夜11时)。 构造函数可以包含默认参数。图 6.8 重新定义 Time 的构造函数,该函数中每个变量的默认参数为0。通过提供构造函数默认参数,即使在构造函数调用中不提供数值,对象也能利用默认参数初始化为一致状态。程序员提供所有参数默认值(或显式不要求参数)的构造函数也称为默认构造函数