gpt4 book ai didi

java - 测试使用 SoftReference 的代码

转载 作者:搜寻专家 更新时间:2023-11-01 02:17:58 28 4
gpt4 key购买 nike

使用 SoftReference<T> 获取任何代码要进行全面测试,必须想出某种方法来测试“是的,它已被取消”的情况。人们可能或多或少地通过使用“for-test”代码路径强制引用为空来模拟这一点,但这不会像 GC 那样管理队列。我想知道是否有人可以分享建立一个可重复、受控环境的经验,在这个环境中,实际上 GC 会被激发进行收集和清零?

最佳答案

我会将问题分为两部分:

  1. 在返回 null 时测试代码路径。
  2. 测试 SoftReference。

对于 #1,我会使用一个 Mock,它返回具有足够变化的 null(有时是 null,有时是真实对象)来测试您认为您将使用 GC 的所有相关场景。那就是单元测试。

接下来真的是一个集成测试,看看GC的行为WRT SoftReference是否如你所料。我不确定我是否会努力完全自动化这样的测试,除非在更大的负载测试环境中,但如果这很重要,我会启动一个具有非常紧凑的最大内存量的 JVM 并加载足够的内存来触发软引用收集。失败的路径是让代码不使用软引用,加载的内存应该会导致 OutOfMemory 错误。然后通过转换为软引用使测试通过。测试的目的应该是断言单元测试中关于行为的假设。

关于java - 测试使用 SoftReference<T> 的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2814039/

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