akka - 如何用虚拟时间测试 Akka 演员?
问题描述
我有少量的演员(用 Java 编写,使用 Akka 类型化的 API),它们用来TimerScheduler
为自己安排消息。我想编写测试来检查它们的交互。
当使用ActorTestKit
文档中的推荐时,它可以使用普通的计时器来执行它们,这意味着当参与者在 10 秒内为自己安排一条消息时,测试必须持续 10 秒。
为了加快测试速度,我想使用虚拟时间进行测试,测试中的调度程序实际上并没有等待,而是提前了一个虚拟时钟。不幸的是,ActorTestKit
似乎并不支持这个概念。
是否有运行此类测试的既定模式?
解决方案
ActorTestKit
包含(在ManualTime
Java APIakka.actor.testkit.typed.javadsl.ManualTime
中:)允许您按持续时间(例如在断言之间)提前计时器。请参阅文档中的控制调度程序ActorTestKit
。