如何使用PowerMockito使用varargs模拟构造函数?

时间:2016-03-05 23:13:40

标签: java mockito powermockito

我有一个豆子:

class Bean {
    public Bean(String name, Integer number, Resource... resources ) {
        // ...
    }
}

我想模拟bean的构造函数。这是我的测试:

@Test
public void shouldReturnMockedBean() throws Exception {
        PowerMockito.whenNew(Bean.class)
                .withArguments(
                        Mockito.anyString(),
                        Mockito.anyInt(),
                        Mockito.<Resource>anyVararg()
                ).thenReturn(beanMock);

        Bean bean = new Bean("abc", 1);

        Assert.assertNotNull(bean);
}

我还在测试类中使用PowerMockito注释:

@RunWith(PowerMockRunner.class)
@PrepareForTest({Bean.class})

但是我得到一个错误null而不是我的模拟。我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

varargs设置为null ,而不是创建第一个元素为null的varargs。

要解决此问题,请执行Bean bean = new Bean("abc", 1, (Resource)null);

请参阅this

但是,如果您不打算提供任何资源,那么只需省略第3个参数。