【发布时间】:2014-08-21 03:07:52
【问题描述】:
我正在尝试通过我的数据库测试缓存的异步加载。我正在使用 Google guava 加载缓存,而后者又使用缓存加载器异步刷新给定键(如 https://code.google.com/p/guava-libraries/wiki/CachesExplained 中所述)
我正在尝试以下步骤进行测试
- 刷新持续时间:1 秒
- 调用缓存,键不存在。调用模拟数据库
- Thread.sleep(2000L)
- 再次调用相同的密钥。由于密钥存在且刷新周期结束,因此应返回旧值并开始异步刷新
Thread.sleep(2000L)
再次调用同一个键。
由于我在嘲笑道,我希望它至少被调用两次。但是,当我尝试验证模拟时,它没有说模拟只被调用过一次。如何确保 dao 被调用两次?我正在模拟线程工厂,同时创建被调用以创建新线程的 Executor,正如预期的那样。为什么第二次调用 dao 没有发出?我在这里错过了什么吗?我正在使用新的 FixedThread Pool 执行器并将其装饰为监听装饰器。
测试这种刷新缓存的正确方法是什么?非常感谢任何帮助。
【问题讨论】:
标签: java multithreading spring unit-testing guava