我有幾個類別:StateProcessor和國家。 我想寫一個測試方法StateProcessor.process(State)。 這個方法的邏輯非常簡單,但它包含了很多日誌消息。單元測試和記錄
logger.info(state.getSourse().toString());
if (state.getTarget() == Target.A) {
logger.info(state.getCreationTime());
service.doSmth(state);
} else {
logger.info(state.getTagret().getName());
service.doOtherStff(state);
}
我不想真正國家實例傳遞給過程方法,因爲這個類是非常複雜,它需要大量的代碼來構建它的行。所以,我想傳遞Mockito創建的模擬對象。根據主要邏輯,我只需要模擬getTarget()方法。但執行將失敗,NPE處於state.getTagret()。getName()和state.getSourse()。toString()。但我不喜歡嘲笑所有這些方法的想法!他們只用於記錄。另外,我不想每次添加日誌消息時都修復測試。
日誌記錄在那裏非常有用,所以我根本不想刪除它。但嘲笑僅用於記錄日誌的方法看起來很奇怪。
我該如何解決這個問題?
難道你不能配置測試環境來切斷所有的'logger.info'消息,同時讓你的dev顯示它們嗎? – 2012-04-18 15:34:18
對不起,我沒有明白你的意思。日誌記錄在當前時間被禁用。但我不能刪除所有這些logger.info行 – NullPointer 2012-04-18 15:39:05
我的意思是什麼第一個回答狀態 – 2012-04-18 16:00:23