java里怎样将junit测试结果输出到日志
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java里怎样将junit测试结果输出到日志相关的知识,希望对你有一定的参考价值。
java里怎样将junit测试结果输出到日志
引用log4j的jar包,然后在日志的配置文件设置好日志输出级别,在需要输出日志的类中,定义Logger的实例。如:
Logger logger=Logger.getLogger(this.getClass());logger.debug("Test"); 参考技术A Logger logger=Logger.getLogger(this.getClass());
logger.info(date);追问
就这样就行了?写在java里报错啊
追答引用下log4j的包
追问引用了还是不得行,还是要报错
追答报什么错。
Java 单元测试如何断言(检查)控制台输出
关于在 JUnit 单元测试中如何断言某个函数的控制台输出已是我一个长久的问题. 虽然有控制台输出的函数有了副作用, 不能称之为一个纯函数, 在讲求函数式编程的今天, 纯函数是最好测试的, 所谓的 Data In, Data Out. 但总还是有这样的需求, 比如自己实现的某个日志框架的 Appender, 需要验证它向控制台的输出内容.
我先前在项目中的办法是, 先把把标准输出定向到一个 ByteArrayOutputStream
中去, 完后把这个流转成字符串来断言它的内容, 最后恢复标准输出为 System.out
, 代码如下:
ByteArrayOutputStream output = new ByteArrayOutputStream();
System.setOut(new PrintStream(output));System.out.print("Hello");
assertThat(output.toString(), is("Hello");
System.setOut(System.out);
这样也能完成任务, 本质也是对的, 但稍显复杂了些. 今天读 Spring in Action
一书, 发现它用了 StandardOutputStreamLog
这个 JUnit 的 @Rule
, 来自于 System Rules. 其实 StandardOutputStreamLog
类已不推荐使用, 取而代之的是 SystemOutRule, 所以应用 SystemOutRule
来断言控制台输出的测试方法就是 阅读全文 >>
以上是关于java里怎样将junit测试结果输出到日志的主要内容,如果未能解决你的问题,请参考以下文章
maven中执行JUnit测试的时候,我使用log4j进行日志打印,怎样才能获取log4j打印的日志?