創建日誌,我有以下代碼:我如何斷定我的日誌消息時由龍目島
@Component
@Slf4j
public class MyClass {
private OtherClass otherClass;
@Autowired
public MyClass(OtherClass otherClass) {
this.otherClass = otherClass;
}
public void start() {
try {
otherClass.execute();
} catch (FeatureException exception) {
log.warn(exception.getMessage());
}
}
我想要做的測試,以驗證日誌消息。 我不知道如何。
感謝
如果您需要驗證日誌消息,那可能是代碼異味。你能詳細說明爲什麼你需要驗證日誌消息嗎? –
@AlastorMoody存在一些需要特定消息的使用案例:客戶端請求正確記錄此特定消息,因爲其他工具期望它;一個項目經理說,我想要100%的代碼覆蓋率,包括日誌語句等。 –
您可以製作一個程序包專用異常(PPE),它擴展了您的FeatureException異常。這個PPE有一個logMessage()方法,它可以構造你想要的消息,而不用詢問調用代碼的消息。此PPE爲您提供所需的日誌消息,並且在您的單元測試中可以檢查是否引發了包私有異常。來自公共調用者,他們仍然可以捕獲FeatureException。這是否能解決您的問題?如果這有效,那麼我可以將此評論轉換爲答案,以便您可以接受它。如果沒有,你可以在logMessage上使用assertEquals。 –