当你在IntelliJ idea中跑一个Java单元测试时,可能会发现单元测试本身没有任何问题,可以成功执行,但是IntelliJ的日志输出窗口里却打印出大量的“错误”日志,类似于下面这样:
log4j:ERROR setFile(null,true) call failed.java.io.FileNotFoundException: / (Is a directory)at java.io.FileOutputStream.open0(Native Method)at java.io.FileOutputStream.open(FileOutputStream.java:270)at java.io.FileOutputStream.<init>(FileOutputStream.java:213)at java.io.FileOutputStream.<init>(FileOutputStream.java:133)at org.apache.log4j.FileAppender.setFile(FileAppender.java:294)at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:165)at org.apache.log4j.DailyRollingFileAppender.activateOptions(DailyRollingFileAppender.java:223)at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:307)at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:172)at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:104)at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:842)at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:768)at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:648)at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:514)at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:580)at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:526)at org.apache.log4j.LogManager.<clinit>(LogManager.java:127)at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:66)at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:270)at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:281)(后面很长,省略)log4j:ERROR Either File or DatePattern options are not set for appender [LOCAL].
这和你的单元测试没有任何关系,它是因为程序中使用的日志库 log4j 在默认的路径下找不到log4j配置文件导致的。如果你的项目使用了标准的目录布局,那么应该在 resources 目录下有一个 log4j.properties 配置文件,类似于下面这样:
└── test
├── java
│ └── com
│ └── codelast
│ └── MyUnitTest.java
└── resources
└── log4j.properties
其中 test 目录下存放所有和单元测试相关的代码文件以及配置文件,下面有两个平级的目录:java 和 resources。
log4j.properties文件的内容:
log4j.rootLogger=INFO,stdout
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{HH:mm:ss} [%p]:%m%n
这样你再运行 IntelliJ 里的单元测试,就不会打印出上面那些超长的错误日志了。
文章来源:https://www.codelast.com/
➤➤ 版权声明 ➤➤
转载需注明出处:codelast.com
感谢关注我的微信公众号(微信扫一扫):
以及我的微信视频号: