我怎么知道是否创建了任何mockito对象



是否有一种方法可以告诉测试中是否创建了任何mockito对象?在我们的测试中,Mockito对象保存在会话中,然后应该在循环中从会话中删除:

    MockUtil mockUtil = new MockUtil();
    for (Object object : sessionObjects) {
        if (mockUtil.isMock(mock) || mockUtil.isSpy(mock)) {
            toClean.add(serviceClass);
        }
    }

是否有一种方法来避免这个循环,并检查是否有任何模拟对象被创建?

mockitto没有保存所有mock的全局列表,因为mock是短期对象,在每次测试之前都会被替换——通常是通过@Before方法、MockitoJUnitRunner或MockitoRule。(保持全局列表可能会干扰模拟的垃圾收集。)如果一个测试在启动之前没有替换和准备它的整个环境,那通常是测试启动的错误,而不是测试没有清理的错误。

如果您使用Mockito作为每个测试套件只启动一次的长寿命服务器的一部分(或者有一个长寿命的容器注入mock),那么Mockito文档中列出的项目#17中的Mockito.reset是一个很好的用途。reset将清除模拟的所有期望和记录的调用,这对于在测试开始或结束时清除长期存在的对象是有益的。它经常被错误地用于在应该分为两个测试的测试中明确期望;注意不要过度使用。

旁白:你可能不应该使用MockUtil;它在一个内部包装中。选择Mockito. mockingdetails (Object)代替,就像mockitto文档中的item# 26一样。

相关内容

  • 没有找到相关文章

最新更新