如何使用 Mockito 调用私有构造函数?

问题描述 投票:0回答:1

由于 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 调用构造函数的可能性。

java junit mockito
1个回答
0
投票

可以尝试使用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);
    }
} 

注意这里注解是非常必要的

© www.soinside.com 2019 - 2024. All rights reserved.