首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用PowerMockito模拟PropertyConfigurator.configure()?

如何用PowerMockito模拟PropertyConfigurator.configure()?
EN

Stack Overflow用户
提问于 2017-02-21 22:00:14
回答 1查看 332关注 0票数 1

我使用log4j记录消息,log4j属性来自用户。我已经使用PropertyConfigurator.configure(Properties)配置了用户提供的属性。

在编写测试用例时,我使用PowerMock模拟PropertyConfigurator和配置方法。configure()方法是一个空的静态方法。当我尝试这样做时,我得到了空指针异常。有没有办法做到这一点?

我试着去做

代码语言:javascript
复制
PowerMockito.mockStatic(PropertyConfigurator.class);
PowerMockito.doNothing().when(PropertyConfigurator.class);
PropertyConfigurator.configure(slf4jPropertiesMock);

这不管用。

如果可能的话,有没有其他方法可以在不使用PropertyConfigurator.configure(Properties)的情况下获得seme结果?在这种情况下,单元测试将会很容易。

EN

回答 1

Stack Overflow用户

发布于 2017-02-21 22:19:20

确保您的测试类中包含此配置:

代码语言:javascript
复制
@RunWith(PowerMockRunner.class) 
@PrepareForTest(PropertyConfigurator.class)
public class Test{

你的模仿应该是这样的:

代码语言:javascript
复制
PowerMockito.doNothing().when(PropertyConfigurator.class)
      .configure(Mockito.any(Properties.class);

没有PowerMockito的

PropertyConfigurator.configure(Properties)调用包装到一个包方法中:

代码语言:javascript
复制
public class C{
   ...
   void configure(Properties p){
     PropertyConfigurator.configure(p);
   }

侦察C类并模拟configure方法:

代码语言:javascript
复制
C c = new C();
C sSpy = Mockito.spy(c);
Mockito.doNothing().when(c).configure(Mockito.any(Properties.class);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42369407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档