gpt4 book ai didi

java - 我如何判断是否创建了任何mockito对象

转载 作者:行者123 更新时间:2023-11-30 03:15:50 25 4
gpt4 key购买 nike

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

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

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

最佳答案

Mockito 不会保留所有模拟的全局列表,因为模拟是短暂的对象,在每次测试之前都会被替换 - 通常由 @Before 方法 MockitoJUnitRunner ,或MockitoRule 。 (保留全局列表可能会干扰模拟的垃圾收集。)如果测试在开始之前没有替换并准备其整个环境,则通常是正在启动的测试的错误,而不是未清理的测试的错误。

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

旁白:您可能不应该使用 MockUtil ;它位于内部包装中。喜欢Mockito.mockingDetails(Object)相反,如the Mockito docs as item #26 .

关于java - 我如何判断是否创建了任何mockito对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32632338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com