gpt4 book ai didi

java - 当调用final类的静态方法时如何PowerMockito.doNothing?

转载 作者:行者123 更新时间:2023-12-02 07:32:45 47 4
gpt4 key购买 nike

我在其中一个实用程序类中有这行代码

System.setProperty("someProperty", <StringValue>);

当上面的代码行通过测试执行时,我不希望发生任何事情。我已经用以下注释对该类进行了注释。

@PrepareForTest({KeyStore.class, System.class})
@RunWith(PowerMockRunner.class)
@PowerMockIgnore({"javax.management.*", "javax.security.*"})

我尝试使用以下选项不执行任何操作:

1. PowerMockito.mockStatic(System.class);
PowerMockito.doNothing().when(System.class, "setProperty", "someProperty", "stringValue");

2. PowerMockito.mockStatic(System.class);
PowerMockito.doNothing().when(System.class, "setProperty", Mockito.any(String.class), Mockito.any(String.class));

3. PowerMockito.mockStatic(System.class);
PowerMockito.doAnswer(new org.mockito.stubbing.Answer<Object>() {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
return null; //does nothing
}
}).when(System.class, "setProperty", "someProperty", "stringValue");

我在测试执行时总是遇到以下错误。

org.mockito.exceptions.misusing.UnfinishedStubbingException: 
Unfinished stubbing detected here:

关于如何在调用 System.setProperty 时我什么都不做的任何建议。请注意 System 是一个最终类,我们正在调用带有 2 个参数的静态方法。谢谢!!

最佳答案

只有 void 方法可以 doNothing()!。 setProperty() 返回字符串

使用

PowerMockito.mockStatic(System.class);
PowerMockito.when(System.setProperty(anyString(), anyString())).thenReturn("test");

关于java - 当调用final类的静态方法时如何PowerMockito.doNothing?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59607003/

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