java - 如何使用 PowerMockito 模拟带有可变参数的构造函数?

标签 java mockito powermockito

我有一颗 bean :

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 而不是我的模拟。我在这里做错了什么?

最佳答案

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

要修复它,请执行 Bean bean = new Bean("abc", 1, (Resource)null);

参见this

但是,如果您打算不提供任何资源,则只需省略第三个参数即可。

关于java - 如何使用 PowerMockito 模拟带有可变参数的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35821077/

相关文章:

java - try-with-resources:Kotlin 中的 "use"扩展功能并不总是有效

java - 如何将列表转换为 map ?

android - 在Kotlin单元测试中,为什么Android Studio即使将Mockito编译并通过测试,却仍将Mockito显示为 Unresolved reference ?

java - 如何使用 Mockito 比较 Junit 测试用例中的多个条件

android - Robolectric + PowerMock + Mockito 不工作

java - 使用 PowerMockito 运行 Cobertura 抛出 java.lang.OutOfMemoryError : PermGen space

java - 这是用 java 12 编写的,但是如果我在 java 15 上运行它,它会抛出异常错误

java - Apache Commons 配置验证属性文件

java - 静态实例上的模拟方法

java - PowerMockRunner 不应用 JUnit ClassRules