我有一個創建錯誤條件的單元測試。通常,被測試的類將這個錯誤寫入日誌(在這種情況下使用log4j,但我認爲不重要)。我可以臨時更改日誌級別,使用如果應該產生錯誤,我應該更改單元測試的日誌級別嗎?
Logger targetLogger = Logger.getLogger(ClassUnderTest.class);
Level oldLvl = targetLogger.getLevel();
targetLogger.setLevel(Level.FATAL);
theTestObject.doABadThing();
assertTrue(theTestObject.hadAnError());
targetLogger.setLevel(oldLvl);
但是這也意味着,如果測試過程中出現不相關的/無意的錯誤,我不會看到在日誌中的信息無論是。
我在這裏應該使用最佳做法還是常用模式?如果我可以提供幫助,我不喜歡刺激日誌級別,但我也不喜歡在測試輸出中產生一堆噪聲,這可能會嚇到未來的開發人員。
好的,我想我以前見過有人做過#1,但是我將不得不爲了一些示例代碼進行挖掘。就像我說的,我使用的是Log4J,所以如果你發生*有一個方便的鏈接到一個例子,它將非常感激! – Coderer 2013-02-12 11:23:45
嗯,我剛剛發現[這](http://stackoverflow.com/questions/1827677/how-to-do-a-junit-assert-on-a-message-in-a-logger)看起來喜歡它應該做的伎倆。謝謝! – Coderer 2013-02-12 11:28:10