当类的静态方法返回相同类的对象时,PowerMock会抛出initialzationError

时间:2017-11-21 21:00:00

标签: java mockito powermock mockstatic

抛出initializationError。我正在使用powermock 1.6.4和javassist-3.20.0。似乎我不能在同一个班级(同时)模拟和模拟静止。

interface B
{
  public static B getA()
  {
    return new B()
      {
      };
  }
}

a test code is:
@PrepareForTest({B.class})
@Test
  public void testB()
  {
    B a = mock( B.class );
    mockStatic( B.class );
    when( B.getA() ).thenReturn( a );

  }

1 个答案:

答案 0 :(得分:0)

您必须准备B模拟(例如,使用PowerMockRunner),否则测试将在此行引发ClassNotPreparedException

mockStatic( B.class );

这个测试将通过(虽然它没有断言,说这个测试不会抛出异常可能更准确;):

@RunWith(PowerMockRunner.class)
@PrepareForTest({B.class})
public class BTest {

    @Test
    public void testB() {
        B a = Mockito.mock(B.class);
        PowerMockito.mockStatic(B.class);
        Mockito.when(B.getA()).thenReturn(a);
    }
}

我已经使用以下方式验证了这一点:

  • Mockito v1.10.19 with PowerMock v1.6.4
  • Mockito v2.7.19 with PowerMock v1.7.0