我有一个创建错误条件的单元测试。通常,被测试的类将这个错误写入日志(在这种情况下使用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