我使用log4j记录消息,log4j属性来自用户。我已经使用PropertyConfigurator.configure(Properties)配置了用户提供的属性。
在编写测试用例时,我使用PowerMock模拟PropertyConfigurator和配置方法。configure()方法是一个空的静态方法。当我尝试这样做时,我得到了空指针异常。有没有办法做到这一点?
我试着去做
PowerMockito.mockStatic(PropertyConfigurator.class);
PowerMockito.doNothing().when(PropertyConfigurator.class);
PropertyConfigurator.configure(slf4jPropertiesMock);这不管用。
如果可能的话,有没有其他方法可以在不使用PropertyConfigurator.configure(Properties)的情况下获得seme结果?在这种情况下,单元测试将会很容易。
发布于 2017-02-21 22:19:20
确保您的测试类中包含此配置:
@RunWith(PowerMockRunner.class)
@PrepareForTest(PropertyConfigurator.class)
public class Test{你的模仿应该是这样的:
PowerMockito.doNothing().when(PropertyConfigurator.class)
.configure(Mockito.any(Properties.class);没有PowerMockito的
将PropertyConfigurator.configure(Properties)调用包装到一个包方法中:
public class C{
...
void configure(Properties p){
PropertyConfigurator.configure(p);
}侦察C类并模拟configure方法:
C c = new C();
C sSpy = Mockito.spy(c);
Mockito.doNothing().when(c).configure(Mockito.any(Properties.class);https://stackoverflow.com/questions/42369407
复制相似问题