通常、コードにログ機能が表示されます。
public class A {
private static final Log LOG = LogFactory.getLog(A.class);
と使用法:
} catch (Exception e) {
LOG.error(e.getMessage(), e);
throw e;
}
しかし、そのようなコードの単一の単体テストさえ見たことがありません。
もちろん、例外をスローするテストと例外の種類をテストしますが、ログ情報を確認するためのテストを作成する必要がありますか? ロギングはシステム動作の別の部分であると考える傾向があるため、テストでそれをカバーすることは論理的にやめられます。
それをカバーする必要があると仮定すると、元のコードを変更してモックログを挿入し、「エラー」メソッドが予期されたメッセージで呼び出されたことを確認する必要があります。しかし、元のクラスがサービスであり、それが春によってインスタンス化されている場合はどうすればよいですか? ロガーや他の依存関係を注入する必要がありますか?