如何停止所有演员并等待他们终止?

How to stop all actors and wait for them to terminate?

我正在为我的 Akka 项目实施单元测试。为了避免 InvalidActorNameException 之类的情况,我希望在下一个单元测试 运行 之前停止在一个单元测试中创建的所有参与者。因此,对于在单元测试中创建的每个参与者,我在它的末尾调用 _system.stop(someActorRef)。然而,一个 actor 真正停止需要一些时间,不幸的是,下一个单元测试通常在 运行ning 开始之前,在前一个中创建的 actor 实际上已经消失了。由于 stop 方法返回的 FutureawaitStop 方法都不可用,我真的不知道如何解决这个问题。目前我在每个单元测试结束时调用 Thread.sleep(1000) 并希望到那时所有演员都死了,但是,显然,我不能一直这样。 :D

如有任何提示,我将不胜感激!

你可以在测试结束时试试这个:

val probe = TestProbe()
probe.watch(someActorRef)
system.stop(someActorRef)
probe.expectMsgType[Terminated]
//another way
//probe.expectMsgPF() {
//  case Terminated(someActorRef) =>
//}