Mockito / PowerMock:静态初始化被抑制时模拟静态类的字段

时间:2017-06-30 13:27:41

标签: java junit mockito powermockito

我正在尝试为类中的方法RPCProxy编写单元测试。该文件包含一些静态初始化块,用于创建与生产环境相关的内容,并且出于测试的目的,特别是我试图测试的方法,它们不使用这些与生产相关的东西。因此,我已经抑制了静态初始化(没有抛出错误,因为无法找到某些类和对象)。我遇到的问题是我尝试编写测试的类也包含许多现在没有创建的静态变量。我正在测试的方法假设这些对象存在,因此,当方法运行并尝试在其中一个对象上调用方法时,会抛出NullPointerException。

我想知道怎么做是以某种方式模拟这些对象并以某种方式将它们插入到类中,以便该方法使用我的版本,而不是它期望存在的版本,实际上不存在。

关于我正在测试的一些上下文:我正在尝试获取静态方法RPCProxy.getInstance。此方法调用名为create的私有静态方法,该方法返回Proxy对象。我已经模拟了Proxy对象,并模拟了create方法以返回模拟的代理对象。唯一的问题是newInstance方法试图使用一些前面提到的不存在的对象。

Proxy mockProxy = Mockito.mock(Proxy.class);

PowerMockito.spy(RPCProxy.class);

PowerMockito.doReturn(mockProxy).when(RPCProxy.class, "create", Mockito.any(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString());

assertSame(mockProxy, RPCProxy.getInstance("test12345"));

0 个答案:

没有答案