簡體   English   中英

測試Akka actor時檢查日志消息是否缺失

[英]Check for lack of log messages when testing akka actors

使用TestKit測試Akka actor時, https: TestKit顯示了如何驗證是否記錄了給定消息。

有沒有辦法檢查是否缺少消息?

我已經設置了參與者,以便在收到未處理的消息時調用一種方法來記錄類似“收到了意外消息”的日志。 在我的測試中,我想驗證該消息是否從未記錄過,即使該測試似乎成功了也是如此。 有沒有辦法做到這一點?

我正在使用Akka 2.5和Java 10。

這取決於您的實現。 您可以執行以下兩項操作之一:

1)創建一個TestKit探針,並使其訂閱系統的eventStream

yourActorSystemInTheTest.eventStream()。subscribe(yourProbe.getRef(),UnhandledMessage.class);

然后最后檢查一下,以您的情況為0,探針收到了多少條消息。請使用許多“期望...”方法之一。

2)文檔告訴您如何檢查日志消息,因此只需斷言獲得“收到意外消息”的次數為0。

同樣,根據演員的實施情況,上述操作可能無效。

祝好運!

為了提供一些細節,這是我需要做的:

import akka.event.Logging;
import akka.testkit.javadsl.EventFilter;
import akka.testkit.javadsl.TestKit;
...

@Test
public void noUnhandledTest() {

  new TestKit(system) {{
    new EventFilter(Logging.Warning.class, system).
       occurrences(0).
       matches("unhandled event").
       intercept(() -> {
         try {
           <actual test code>

           // Intercept needs a supplier
           return 0;
         } catch (Exception e) {
           // Suppliers can't throw
           throw new RuntimeException(e);
         }
       });
  }};
}

src/test/resources/application.conf

akka.loggers = [akka.testkit.TestEventListener ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM