如何用虚拟时间测试Akka actor?

How to test Akka actors with virtual time?

我有少数演员(用 Java 编写,使用 Akka 类型的 API),它们利用 TimerScheduler 为自己安排消息。我想编写测试来检查它们的交互。

当使用 ActorTestKit recommended in the documentation 时,它可以使用普通计时器执行它们,这意味着当 actor 在 10 秒内向自己安排消息时,测试必须持续 10 秒.

为了加快测试速度,我想使用虚拟时间进行测试,测试中的调度程序实际上并不等待,而是提前一个虚拟时钟。不幸的是,ActorTestKit 似乎不支持这个概念。

是否有针对 运行 此类测试的既定模式?

ActorTestKit 包括 ManualTime(在 Java API: akka.actor.testkit.typed.javadsl.ManualTime 中),它允许您按持续时间(例如断言之间)推进计时器.参见 controlling the Scheduler in the ActorTestKit docs