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

Mockito外插试验方法

淳于禄
2023-03-14
private DynamicBuild getSkippedBuild() {
    DynamicBuild build = mock(DynamicBuild.class);
    when(build.isSkipped()).thenReturn(true);
    return build;
}
org.mockito.exceptions.misusing.UnfinishedStubbingException: 
Unfinished stubbing detected here:
-> at LINE BEING CALLED FROM

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();
Hints:
 1. missing thenReturn()
 2. you are trying to stub a final method, you naughty developer!

看起来mockito不高兴当你在测试方法之外存根。不支持吗?

编辑:我可以通过在@test方法中执行stubbing来实现这一点,但我希望在@test方法中重用stubbing。

共有1个答案

莘聪
2023-03-14

如果isskipped()不是final方法,则此问题可能表明您试图在对另一个方法进行stubbing的同时对一个方法进行stubbing。它不受支持,因为Mockito依赖其stubbing API中的方法调用顺序(when()等)。

我想你的测试方法中有这样的东西:

when(...).thenReturn(getSkippedBuild());

如果是,则需要重写如下:

DynamicBuild build = getSkippedBuild();
when(...).thenReturn(build);
 类似资料:
  • 我正在尝试测试,只有在调用case的情况下,否则不会调用该方法。 但这会调用我的,并在内抛出空指针。因为我的行为不会调用,所以我如何在不调用的情况下测试它。

  • 浏览AssertJ的API时,我似乎没有发现任何涉及Mockito行为的内容。验证现在我的断言都使用AssertJ fluent API,还有Mockito。验证哪一种是破坏断言流的。 有没有类似的方法来验证我错过的AssertJ中的方法没有被调用、只被调用一次等?

  • 玩弄Mockito来实现我的服务的单元测试,但由于某种原因,我无法通过我的厚脑袋来实现这一点。我的考试通过了,但我不能确信我做得对。 下面是一个测试count()方法的示例。该方法只是将调用转发到它的存储库,我不想验证仅此而已,没有其他事情发生。这就是我得到的: 我的考试及格了,但我有一些问题。 > 我需要验证吗?我觉得我这样做是因为我想验证personRepository。实际上调用了count

  • 我试图验证在使用powerMockito 1.6.4测试服务方法时从未调用过静态方法 我按照这个答案做了同样的事情。 以下是我的代码。 我现在面临的问题是,调用real并给出nullPointerException。 我的假设是与一起工作,以便指定要验证的静态方法。 我错过什么了吗?

  • 我有下面的课 > 我应该在EmailManager上方添加什么注释?@Spy@Mock还是@Autow的? 如何告诉Mockito不要执行getImageLocation(getEmailContent正在调用的方法)并且总是返回而不是“new location”?我看了很多文章,搞不清“什么时候”“存根”“退货”

  • 问题内容: 我已经开始发现Mockito库,并且有一个我没有找到正确答案的问题。 例如,如果我的UserDAO类中有将用户保存到数据库中的此类方法: 我应该如何测试? 如果我想测试一个DAO类,那么我需要创建一个模拟,模拟,模拟等吗?如此不测试数据库本身? 但是,如果我还想测试dao和数据库的行为怎么办? 您能否提供一些代码示例,可能有用的链接,并显示实现此目的的最佳方法? 问题答案: 这是使用M