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

模拟静态void方法时抛出了“UnfinishedStubbingException:此处检测到未完成的stubbing”

夹谷星河
2023-03-14

运行以下代码时,我在此处检测到错误消息Unfinished stubing:

这是带有公共静态void myMethod的MyClass。

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

}

这是MyClass2和myMethod2方法。在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. 

共有1个答案

斜光耀
2023-03-14

我相信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");
}
 类似资料: