繁体   English   中英

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

[英]How to stop all actors and wait for them to terminate?

我正在为我的Akka项目实施单元测试。 为了避免InvalidActorNameException等,我希望在运行下一个单元测试之前停止在一个单元测试中创建的所有actor。 因此,对于在单元测试中创建的每个_system.stop(someActorRef) ,我在其末尾调用_system.stop(someActorRef) 但是,要使actor实际停止需要花费一些时间,并且不幸的是,下一个单元测试通常在实际消失前一个actor之前就开始运行。 而且由于stop方法既没有返回Future ,也没有可用的awaitStop方法,所以我真的不知道如何解决这个问题。 目前,我在每次单元测试结束时都调用Thread.sleep(1000) ,希望所有参与者到那时都已死亡,但是,显然,我不能这样坚持。 :D

我将不胜感激!

您可以在测试结束时尝试以下操作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM