org.mockito.exceptions.misusing.UnfinishedStubbingException:
时间: 2024-10-16 14:19:20 浏览: 76
org.mockito.exceptions.misusing.UnfinishedStubbingException是一个Mockito库在单元测试中抛出的异常。当你在试图完成对Mock对象的模拟(stubbing)操作时,如果没有正确地结束模拟,就会触发这个异常。Mockito是一种用于编写测试的工具,它允许你在测试中模拟对象的行为。如果你试图对一个mock对象添加新的期望(expectations)或行为(when),但在添加完所有预期行为之前就尝试验证或完成模拟,UnfinishedStubbingException就会抛出,提示你需要确保所有的mock方法都被适当地设置了返回值或者行为。
例如,下面的代码可能导致此异常:
```java
// 错误示例
List mockedList = mock(List.class);
mockedList.add("item"); // 没有设置mock对象add方法的返回值或行为
// 测试代码尝试验证add方法
assertEquals(0, mockedList.size()); // 这里会抛出异常,因为add方法未完成模拟
```
正确的做法应该是为每个预期的调用提供明确的处理,如设置返回值或者行为链:
```java
// 正确示例
List mockedList = mock(List.class);
when(mockedList.add("item")).thenReturn(1); // 完成模拟 add 方法的调用
assertEquals(1, mockedList.size());
```
相关问题
org.mockito.exceptions.misusing.UnfinishedStubbingException: Unfinished stubbing detected here: -> at com.zte.ums.cnms.pm.datfileupload.ranomm.clean.CleanTaskPollServiceTest.testInit(CleanTaskPollServiceTest.java:66) 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();
这是一个Mockito框架的异常,通常是因为在测试中使用了Mockito的stubbing功能,但是stubbing没有完成或者没有正确完成。这个异常的信息会告诉你在哪个地方出错了,比如在这个例子中是在CleanTaskPollServiceTest的testInit方法的第66行。
要解决这个问题,你需要检查测试代码中的Mockito stubbing部分,看看是否有stubbing没有完成或者没有正确完成。你可以使用正确的stubbing语法,比如使用thenReturn()来返回一个值,或者使用thenThrow()来抛出一个异常。如果是void方法,则可以使用doThrow()方法来抛出异常。确保每个stubbing都被正确地完成。
org.mockito.exceptions.misusing.invaliduseofmatchersexception:
org.mockito.exceptions.misusing.invaliduseofmatchersexception是Mockito框架中的一个异常,表示在使用Matcher时出现了错误的用法。Matcher是Mockito框架中的一个重要概念,用于匹配方法参数,从而实现对方法的模拟。如果在使用Matcher时出现了错误的用法,就会抛出这个异常。通常情况下,这个异常的出现是由于Mockito的使用者没有正确地使用Matcher,或者使用了不支持的Matcher导致的。为了避免这个异常的出现,我们需要仔细阅读Mockito的文档,并且正确地使用Matcher。
阅读全文