【问题标题】:Mockito / Powermockito mock private void methodMockito / Powermockito 模拟私有 void 方法
【发布时间】:2014-09-21 02:50:21
【问题描述】:

我需要使用 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'的方法,参数类型为:[]
  • 好的,不过,如果能在原始问题中使用它会很高兴.. 请参阅下面的答案,认为它应该可以工作..
  • 从invokeMethod的调用中删除空参数会发生什么?

标签: java unit-testing mockito powermock


【解决方案1】:

我没有尝试过 Whitebox(Powermock 附带),但可以尝试以下方法:

@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()!... 虽然方法是私有 void...
  • 嗯,我认为它一定是我从提供的东西中看不到的东西。确保您的方法名称正确,并且不要将 null 作为参数发送..
猜你喜欢
  • 1970-01-01
  • 2015-03-23
  • 2018-05-03
  • 1970-01-01
  • 2018-11-29
  • 2015-12-13
  • 2019-09-06
  • 1970-01-01
相关资源
最近更新 更多