【问题标题】:"UnfinishedStubbingException: Unfinished stubbing detected here" has been thrown when mocking static void method模拟静态 void 方法时抛出“UnfinishedStubbingException:在此处检测到未完成的存根”
【发布时间】:2021-06-30 09:39:41
【问题描述】:

运行以下代码时,我收到错误消息未完成的存根检测到:

这是带有 public static void myMethod 的 MyClass。

class MyClass{
public static void myMethod(){
    return;
}

}

这是带有 myMethod2 方法的 MyClass2。在 myMethod2 内部,myMethod 正在调用。

class MyClass2{
public String myMethod2(){
    MyClass.myMethod();
    return "String";
}

}

这里是为测试 myMethod2 而编写的测试用例。

class MyMethodTest{
MyClass2 myClass2;
@Test
public void myMethodTwoTest(){
    PowerMockito.mockStatic(MyClass.class);
    PowerMockito.doNothing().when(MyClass.class);
    MyClass.myMethod();
    String str = myClass2.myMethod2();
    assertEquals(str,"String");
}

}

运行此方法时,我收到 UnfinishedStubbingException。

    org.mockito.exceptions.misusing.UnfinishedStubbingException: 
Unfinished stubbing detected here:
-> at **.***.***.**.MyMethodTest.myMethodTwoTest(MyMethodTest.java:125)

E.g. thenReturn() may be missing.
Examples of correct stubbing:
    when(mock.isOk()).thenReturn(true);
    when(mock.isOk()).thenThrow(exception);
    doThrow(exception).when(mock).someVoidMethod();```


Please help me to solve this issue. 

【问题讨论】:

  • 这些开发者都疯了

标签: java testing exception mockito powermockito


【解决方案1】:

我相信https://www.baeldung.com/mockito-mock-static-methods 给出了很好的解释。看着它,我认为以下内容应该可以工作:

class MyMethodTest{
MyClass2 myClass2;
@Test
public void myMethodTwoTest(){
    PowerMockito.mockStatic(MyClass.class).when(MyClass::myMethod).doNothing();
    String str = myClass2.myMethod2();
    assertEquals(str,"String");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    相关资源
    最近更新 更多