当为任何参数定义模拟constrtuctor时,PowerMockito返回null

时间:2016-04-13 16:44:29

标签: java unit-testing powermockito

我一直试图弄清楚与PowerMockito的构造函数嘲笑有什么关系。我的代码类似于以下内容:

public void testConstruction() {
    whenNew(Account.class).withAnyArguments().thenReturn(mock(Account.class));
    assertNotNull(new Account("name")); //fails
}

我不确定在哪里可以找到导致此问题的原因。使用上面的存根代码,当我使用无参数调用构造函数时,PowerMockito将仅返回mock(Account.class)创建的对象;它表现得好像我用withNoArguments()对其进行了抄袭。我确定我的测试类设置正确,因为以下代码通过了:

public void testConstruction() {
    whenNew(Account.class).withArguments("name").thenReturn(mock(Account.class));
    assertNotNull(new Account("name")); //passes
}

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题。如果要模拟的类具有多个构造函数,则withAnyArguments的行为不符合预期。在我的情况下,用whenNew模拟的类有2个构造函数,而在创建此类的新实例时,我总是会得到null。 https://github.com/powermock/powermock/issues/891给出了一些提示,我转而使用withArguments。