我正在使用log4j进行日志消息,而log4j属性来自用户。我已经使用PropertyConfigurator.configure(Properties)
来配置用户提供的属性。
在编写测试用例时,我正在使用PowerMock模拟PropertyConfigurator
并配置方法。configure()
方法是一种空隙静态方法。尝试这样做时,我会得到Nullpointer异常。有什么方法?
我尝试过
PowerMockito.mockStatic(PropertyConfigurator.class);
PowerMockito.doNothing().when(PropertyConfigurator.class);
PropertyConfigurator.configure(slf4jPropertiesMock);
这不起作用。
如果可能的话,是否有任何选择在不使用PropertyConfigurator.configure(Properties)
的情况下以其他方式获得SEME结果的其他选择?在这种情况下,单元测试将很容易。
确保您在测试类中具有此配置:
@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类并模拟配置方法:
C c = new C();
C sSpy = Mockito.spy(c);
Mockito.doNothing().when(c).configure(Mockito.any(Properties.class);