Mockito / PowerMockito模拟私有void方法

9

我需要使用mockito和powermock来模拟一个不带参数的私有void方法。

该方法属于一个被监视的实例。

我知道我需要这样做的事实表明代码存在问题,但我正在处理一个旧项目,将单元测试从一种测试框架转换为另一种。

如果有人有任何建议,将不胜感激。

谢谢!

到目前为止,我尝试了以下方法:

PowerMockito.doNothing().when(Whitebox.invokeMethod(spy,"method",null));

但是我遇到了这个错误:
No method found with name 'method' with parameter types: [ <none> ] 

到目前为止,我已经尝试过:PowerMockito.doNothing().when(Whitebox.invokeMethod(spy,"method",null)); 我得到了以下错误信息:“找不到名称为'method'且参数类型为[<none>]的方法”。 - Mat
好的,不过最好在原问题中提供这些信息。请看下面我的回答,我认为它应该可以解决问题。 - Tobb
当您从调用invokeMethod的参数中删除null时会发生什么? - Tobb
1个回答

14

我没有尝试过自带Powermock的Whitebox,但您可以尝试以下方法:

@RunWith(PowerMockRunner.class)
@PrepareForTest(MyClass.class)
public class MyClassTest {
    private MyClass myClass;

    @Before
    public void setup() {
        myClass = PowerMockito.spy(new MyClass());
        PowerMockito.doNothing().when(myClass, "myPrivateMethod");
    }
    //Tests..
}

就我所记得的,...


谢谢。我尝试了这个,但是出现了错误: 只有void方法可以doNothing()!...虽然该方法是private void... - Mat
嗯,我认为这一定是我从提供的内容中看不到的东西。确保你有正确的方法名称,并且不要将null作为参数发送。 - Tobb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接