在我的应用程序代码中,我有一种情况,我希望使用堆栈跟踪和所有内容完全打印出异常。
在我针对这种情况的测试代码中,当我故意doThrow()
来测试此异常的处理时,我仍然希望记录错误,但没有堆栈跟踪,部分是为了防止日志混乱,部分为了防止测试代码浪费时间打印堆栈跟踪,我不需要。
我可以在logback-test.xml中执行此操作吗?
答案 0 :(得分:0)
好吧,我确实找到了一个解决方法......但它不适用于TDD纯粹主义者。
在我测试的app类中(它实际上可能是某个实用程序类,然后被任何app类使用)我把它放在:
private boolean printErrorStackTrace = true;
void setPrintErrorStackTrace( boolean doPrint ){
printErrorStackTrace = doPrint;
}
再次在app类中,我从这个
更改了LOGGER行LOGGER.error(String.format("file was %s", documentFile), e);
到此:
LOGGER.error(String.format("file was %s", documentFile),
printErrorStackTrace? e : null );
然后在我的测试方法中我把它:
appClass.setPrintErrorStackTrace( false );
...显然我们被告知不允许测试代码进入应用程序代码...但当然我可以在条件子句中使用方法getPrintErrorStackTrace()
然后嘲笑测试代码中的方法。但那会不会是异端邪说?我们还被告知不要仅仅为了帮助测试而添加功能。
但我的日志现在看起来更干净了......