由于 PowerMock 包含旧版本的 Mockito,我试图摆脱 PowerMock 并使用纯 Mockito 修复旧测试。
我正在使用不应调用的私有构造函数测试类:
public final class Foo {
private Foo() {
throw new UnsupportedOperationException("Constructor should not be invoked.");
}
}
使用 PowerMock Whitebox 进行测试:
@Test(expected=UnsupportedOperationException.class)
public void testFoo() throws Exception {
invokeConstructor(Foo.class, (Object[]) null);
}
我找不到在不创建类的新实例的情况下使用 Mockito 调用构造函数的可能性。
可以尝试使用PowerMockito的supress方法:
@RunWith(PowerMockRunner.class)
@PrepareForTest(Foo.class)
public class FooTest {
@Test(expected = UnsupportedOperationException.class)
public void testFoo() throws Exception {
PowerMockito.suppress(PowerMockito.constructor(Foo.class));
Foo instance = PowerMockito.newInstance(Foo.class);
}
}
注意这里注解是非常必要的