[英]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.