我正在尝试测试数据库缓存的异步加载。 我正在使用Google Guava加载缓存,该缓存会异步刷新给定的键(如https://code.google.com/p/guava-libraries/wiki/CachesExplained中所述)。
我尝试以下步骤进行测试:
- 刷新持续时间:1秒 - 调用缓存,键不存在。 执行对模拟数据库的调用。 - Thread.sleep(2000L) - 为相同的键再次进行调用。由于键已存在且刷新期已过,应返回旧值并启动异步刷新。 - Thread.sleep(2000L) - 为相同的键再次进行调用。
由于我正在模拟dao,因此我希望它至少被调用两次。但是,当我尝试验证模拟时,它不能成功,并显示模拟仅被调用了一次。 如何确保已调用dao两次? 在创建Executor时,我模拟了Thread Factory,因此可以调用以创建新线程,这是预期的。为什么不会进行第二次dao调用? 我正在使用new FixedThreadPool executor并将其装饰为listening decorator。测试这样的刷新缓存的正确方法是什么?非常感谢您的任何帮助。
我尝试以下步骤进行测试:
- 刷新持续时间:1秒 - 调用缓存,键不存在。 执行对模拟数据库的调用。 - Thread.sleep(2000L) - 为相同的键再次进行调用。由于键已存在且刷新期已过,应返回旧值并启动异步刷新。 - Thread.sleep(2000L) - 为相同的键再次进行调用。
由于我正在模拟dao,因此我希望它至少被调用两次。但是,当我尝试验证模拟时,它不能成功,并显示模拟仅被调用了一次。 如何确保已调用dao两次? 在创建Executor时,我模拟了Thread Factory,因此可以调用以创建新线程,这是预期的。为什么不会进行第二次dao调用? 我正在使用new FixedThreadPool executor并将其装饰为listening decorator。测试这样的刷新缓存的正确方法是什么?非常感谢您的任何帮助。