单元测试Akka中的持久演员

时间:2014-09-10 12:47:05

标签: java unit-testing akka actor

一个单位如何测试持久性演员。我知道有一个akka-testkit可以用来获取测试演员引用的底层actor对象,如下所示。

final TestActorRef<MyActor> ref = TestActorRef.create(system, props, "testA");
final MyActor actor = ref.underlyingActor();
assertTrue(actor.testMe());

但这对持久性参与者不起作用here

问题:一个单元如何测试持久化的actor方法?

1 个答案:

答案 0 :(得分:1)

此问题已在邮件列表in this thread上得到解答。我会稍微扩展一下答案。

测试Actors时,不应过度使用TestActorRef。最佳做法是通过发送和接收来自演员的消息来尽可能多地进行测试。即使使用TestActorRef,通常也会在通过发送和接收消息再次测试之前使用它来更改actor的状态。不建议使用直接访问actor来直接调用方法。如果您的actor中有一些更复杂的逻辑需要单独测试,您可以考虑将其放入特征或不同的类中,并在没有actor的情况下对其进行测试。

至于测试PersistentActors,正在使用的测试工具包,您可以跟踪进度here