Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何判断是否创建了mockito对象_Java_Junit_Mockito - Fatal编程技术网

Java 如何判断是否创建了mockito对象

Java 如何判断是否创建了mockito对象,java,junit,mockito,Java,Junit,Mockito,有没有办法判断测试中是否创建了mockito对象? 在我们的测试中,Mockito对象保存在会话上,然后应该从循环中的会话中删除: MockUtil mockUtil = new MockUtil(); for (Object object : sessionObjects) { if (mockUtil.isMock(mock) || mockUtil.isSpy(mock)) { toClean.add(serviceClass);

有没有办法判断测试中是否创建了mockito对象? 在我们的测试中,Mockito对象保存在会话上,然后应该从循环中的会话中删除:

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

有没有办法避免此循环并检查是否创建了任何模拟对象?

Mockito没有保存所有模拟的全局列表,因为模拟是短期对象,在每次测试之前通常会被@before方法或替换。(保留全局列表可能会干扰模拟的垃圾收集。)如果测试在开始之前没有替换和准备整个环境,那通常是启动测试的错误,而不是没有清理的测试

如果您使用Mockito作为每个测试套件启动一次的长寿命服务器的一部分(或者使用注入了长寿命容器的mock),那么对于列出的组件来说,这是一个很好的用法<代码>重置将清除模拟的所有预期和记录的调用,这有助于在测试开始或结束时清除长期存在的对象。在测试的中间,经常被错误地用来区分期望,应该被分成两个测试;注意不要为此过度使用它


旁白:您可能不应该使用;它在一个内部包中。相反,请选择。

这似乎是一种代码气味,为什么需要这样做,为什么不能只对它们进行GCD?如果它们没有清理,以后可能会(错误地)被测试套件中的下一个测试使用。是否有更好的方法在每次测试后清理模拟?很难说没有看到更多的测试套件。你能给我一份清单吗?您不必包含整个套件,只需一个基本结构即可显示您如何设置会话。谢谢您,杰夫。在会话中对Mockito.reset进行模拟之前调用Mockito.reset可能是有意义的,以避免内存泄漏