gpt4 book ai didi

java - PowerMockito 测试遗留代码

转载 作者:行者123 更新时间:2023-11-28 21:32:23 30 4
gpt4 key购买 nike

我正在尝试测试一些严重依赖静态方法调用的遗留代码。

基本上,我有一个类 A,它有方法 b() 和 c()。 A.b() 返回 void,A.c() 返回一个值。

如果真正的 A.b() 被调用,被测类抛出异常,所以我不需要它做任何事情。但是,如果我使用:

    PowerMockito.spy(A.class);
PowerMockito.doNothing().when(A.class);

然后我不能模拟 A.c() 来返回我需要的值。这是因为行

PowerMockito.when(A.c()).thenReturn(value);

抛出异常:只有 void 方法可以 doNothing()

有什么方法可以让 A.b() 什么都不做并“覆盖”A.c() 以返回正确的值吗?

最佳答案

我找到了解决问题的解决方法:

要模拟 A.c(),请使用:

PowerMockito.mockStatic(A.class);
PowerMockito.when(A.c()).thenReturn(value);

然后,要在 A.b() 上不执行任何操作,请添加以下行:

PowerMockito.suppress(PowerMockito.method(A.class, "b"));

我觉得很脏。

关于java - PowerMockito 测试遗留代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14816843/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com