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

“UnfinishedStubbingException:在这里检测到未完成的stubbing”在模仿static void方法时引发

米修平
2023-03-14

当运行以下代码时,我将在此处得到未完成的Stubbing检测到的错误消息:

这是带有公共静态空MyMethod的MyClass。

class MyClass{
public static void myMethod(){
    return;
}
class MyClass2{
public String myMethod2(){
    MyClass.myMethod();
    return "String";
}
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");
}
 类似资料:
  • 运行以下代码时,我在此处检测到错误消息Unfinished stubing: 这是带有公共静态void myMethod的MyClass。 } 这是MyClass2和myMethod2方法。在myMethod2内部,myMethod正在调用。 } 这里是为测试myMethod2而编写的测试用例。 } 当运行这个方法时,我得到了UnfinishedStubbingException。

  • 我在两篇关于堆栈溢出的文章中读到过关于这个问题的文章,但它们没有详细说明。我相信这与在嘲笑中嵌套嘲笑有关(根据我读到的)。然而,我并没有看到或完全理解人们张贴的小片段。 我的测试类如下所示(省略了不必要的代码): 我需要调用的方法:

  • 测试代码为: 测试代码为: 你知道怎么了吗?

  • 问题内容: 运行测试时出现以下异常。我正在使用Mockito进行嘲笑。Mockito库提到的提示无济于事。 来自的测试代码。当我运行以下测试时,我看到了异常。 问题答案: 您是在嘲笑内部嵌套嘲笑。在完成对的模拟之前,您正在呼叫,它会进行一些模拟。执行此操作时,Mockito不喜欢它。 更换 与 要了解为什么这会导致问题,您需要稍微了解Mockito的工作方式,并且还需要知道Java中表达式和语句按

  • 我在运行测试时遇到了以下异常。我在用Mockito来嘲笑。Mockito库提到的提示没有帮助。 从测试代码。当我运行以下测试时,我看到异常。