如何禁用测试中的Akka死信警告

wi3ka0sx  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(129)

我最近升级到了Akka 2.6.10。现在当我用ActorTestKit为我的actor运行测试时,我看到了很多类似这样的警告:

[WARN] [12/16/2020 09:03:14.995] [AsyncTestWithControlledTime-akka.actor.internal-dispatcher-3] [akka://AsyncTestWithControlledTime/user/$a] received dead letter: GotCriticalFailure(my custom error message,akka.stream.AbruptStageTerminationException: GraphStage [akka.stream.impl.ActorRefSinkStage$$anon$1@15cc9eaa] terminated abruptly, caused by for example materializer or actor system termination.)

AyncTestWithControlledTime是我写的一个类,也是我所有测试的超类。它创建测试工具包,并为参与者系统提供配置。但是,试图通过配置来抑制警告,例如使用akka.log-dead-letters = off,没有帮助。
当我的参与者订阅了一个流并且测试完成时,我通常会收到警告,因此流没有被正确取消。
如何禁用警告?最好是在测试完成并且关闭测试工具包参与者系统后才禁用警告。

e0bqpujr

e0bqpujr1#

该日志条目来自Akka测试工具包的akka.testkit.TestEventListener(或其某个子类)部分,只有在您通过配置akka.loggers = ["akka.testkit.TestEventListener"]显式启用它的情况下,它才会出现。
akka.log-dead-letters设置只对默认的死信处理程序有效,而对testkit处理程序无效。
如果您不使用日志记录测试工具包,您可以在测试中从配置中删除该配置,如果您使用它,您可能可以使用TestEvent.Mute和一个过滤器来过滤该特定警告。Mute发布在事件总线上,并由TestEventListener拾取。

相关问题