Spring Bootでログ出力をテストするアイデア

やりたかったこと

普通ならloggerが呼び出されることをunit testで確認すればよい。

しかし、とある事情でMockMvcでリクエストを飛ばした際に意図した通りのログが出ていることを確認したかった。

やり方

標準出力にログが出ているか確認すればよい。

CapturedOutputで標準出力を拾い、そこにログが含まれることを検証する。 @ExtendedWithでテストを拡張してやればCapturedOutputは簡単に使える。