当前位置: 首页 > 知识库问答 >
问题:

面对Power Mockito私有Void方法测试用例的问题

尉迟兴修
2023-03-14

我正在使用powermock。我面临以下场景的问题。

更新时间:

我的问题不同。在另一个链接中给出的示例中,私有方法返回了一些值。在我的例子中,这两种方法都返回Void。

class ClassForWhichTestCasesIsPrepared {

    private void myPrivateMethod(String param1, MyBean param2) {
        //Some Code Here to save data
    }

    public void myPublicMethod() {
        //Some Code Here to find the require paramters to pass to below method

        myPrivateMethod(String param1, MyBean param2);
    }

}

面临为myPublicMethod编写测试用例以模拟同一类中的私有方法的问题。

我想模拟myPrivateMethod方法,因为它不应该被调用,但是测试用例应该包括myPublicMethod方法。这两种方法都是无效的。

我不能改变这个设计,我只需要完成并涵盖相同的所需测试用例。

共有1个答案

公冶昆杰
2023-03-14

您可以使用PowerMock提供的间谍方法。

例如。

ClassForWhichTestCasesIsPrepared spy = PowerMockito.spy(new ClassForWhichTestCasesIsPrepared());

  when(spy, method(ClassForWhichTestCasesIsPrepared .class, "myPrivateMethod", 
  String.class, MyBean.class)).withArguments(anyString(), anyObject())
  .thenReturn(true);// this return can be made to do nothing as well if you want

spy.myPublicMethod();
 类似资料:
  • 我试图模拟一个私有方法(executeGetRequest),在我声明要为私有方法返回的模拟的那一行中,私有方法实际上是用null参数执行的,因此抛出了一个NullPointerException。 VlcPlayerMinimal。爪哇: VlcPlayerMinimalTest。爪哇: 堆栈跟踪: 它似乎PowerMockito实际上是调用的方法,我试图在行PowerMockito.do返回(

  • 我有以下代码 我对嘲笑不熟悉。我有以下疑问。我正在尝试测试公共方法。 我是否可以断言私有变量workDone的值? 是否可以验证超类中的方法调用? 如何在方法中模拟私有方法调用?

  • 我有一门课看起来像这样: 我想使用Mockito和Powermock为此编写一个单元测试。我知道我可以这样模仿私有方法: 但是我如何告诉它抛出异常呢?我知道会是这样的: 那里有什么? 请注意,异常是一个私有内部类,因此我不能只执行,因为从单元测试中无法访问。

  • 有人能帮帮我吗?提前谢了。

  • 我试图在测试的类中模拟一个私有方法,如下所示。 现在我需要测试方法和mock。 我尝试创建间谍的上述类,但该方法得到调用时,我这样做下面 在第二行本身被调用。而且,不会被模仿。 也许我用错误的方式创建了间谍对象?无法执行