PowerMockito何时新建然后返回不起作用



我有两个类,如下所示:

public class example
{
public void method()
{
System.out.println("Shouldn't be here!");
}
}
public class lol
{
public void yes()
{
example obj = new example();
obj.method();
}
}

以下是我使用的测试

@RunWith(PowerMockRunner.class)
@PrepareForTest({example.class,lol.class})
class examplemainTest
{
@Test
void yes() throws Exception
{
example obj = PowerMockito.mock(example.class);
PowerMockito.whenNew(example.class).withAnyArguments().thenReturn(obj);
//PowerMockito.whenNew(example.class).withNoArguments().thenReturn(obj);
obj.method();
example aa = new example();
aa.method();  //line 1
lol bb = new lol();
bb.yes();   //line 2
}
}

1号线和2号线仍然调用原始lol::method()。 请帮帮我,我不知道我错过了什么,第一次做测试。 我也尝试了whenNew().withNoArguments()所以我把它放在评论中,这样你就知道了。

我研究了一下,这里whenNew不是嘲笑方法,而是模拟提供的类的构造函数(example.class(。因此,如果您在example.class中定义了一个构造函数,则该构造函数将被模拟类的构造函数替换,但此处调用example::method()是原始构造函数。 所以现在的问题是我们如何处理这种情况,好吧,我在这里找到了它,看看。

最新更新