我有一個測試,我想從測試中記錄一些信息。我設法使用基本的java記錄器,但我做錯了什麼。每個後續的條目日誌消息都會相乘,即。第一條消息記錄一次,第二次兩次,第三次三次,等等,我不知道我做錯了什麼。消息也被推送到控制檯,但只有一次。爲什麼每個後續的日誌條目都重複使用(使用java.util.logging)?
public class MyExampleTest {
private FileHandler fh = null;
private static final Logger logger = Logger.getLogger(MyExampleTest.class.getName());
SimpleFormatter formatter = new SimpleFormatter();
@Test
public void infoPackage() throws Exception {
fh = new FileHandler("test.log", true);
// do some test stuff
writeEntryToLogFile("entry one");
// do some more test stuff
writeEntryToLogFile("entry two");
// do even more test stuff
writeEntryToLogFile("entry three");
}
private void writeEntryToLogFile(String message) throws Exception {
fh.setFormatter(formatter);
logger.addHandler(fh);
logger.info(message);
}
}
我的日誌文件結束這樣的:
entry one
entry two
entry two
entry three
entry three
entry three
我想我的東西搞亂了文件處理程序,但我不知道是什麼。
作爲進一步的補充說明,即打印文本的負載,可惱人的,也將你的測試減慢測試方法。 – Michael
這是一個硒測試。它做的東西,但我從代碼中刪除它,因爲它與我面臨的問題無關。這不是很多的文本,但我想有一些隨機生成的值記錄。無論如何,你的解決方案看起來不錯,但它會拋出一個空指針。我想這是因爲文件處理程序稍後在@test中聲明? – tom
@tom你是正確的削減它。它使問題更加明顯。現在爲了指示切割代碼,添加'...'更好。否則,你是對的。'fh = new FileHandler(「test.log」,true);'應該在setup()方法中執行。我更新是正確的。 – davidxxx