我还喜欢在我的DAO类的JUnit测试中使用slf4j。当您创建新测试或修改旧测试时,它确实有帮助。我通常将旧的日志记录输出保留在调试级别,而使新的日志记录记录处于信息级别,而我仍在积极地使用该方法编写代码。我的JUnit类之一如下所示:
package com.example.mydao;import org.slf4j.Logger;import org.slf4j.LoggerFactory;// other imports not shown...public class TestMyDAO extends TestCase { private static final Logger logger = LoggerFactory.getLogger(TestMyDAO.class); public void testA() { logger.debug("Logging from testA() method"); } public void testB() { logger.debug("Logging from testB() method"); } public void testThatIAmWorkingOn() { logger.info("Logging from my new test method at INFO level"); }}我使用log4j作为实际的日志记录提供程序,因此我的
log4j.xml配置文件如下所示:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false"> <appender name="consoleAppender" > <layout > <param name="ConversionPattern" value="%d %-5p [%c{1}] %m %n" /> </layout> </appender> <logger name="com.example.mydao" additivity="false"> <level value="INFO" /> <appender-ref ref="consoleAppender"/> </logger> <logger name="org.hibernate" additivity="false"> <level value="WARN" /> <appender-ref ref="consoleAppender"/> </logger> <logger name="org.hibernate.connection.DriverManagerConnectionProvider" additivity="false"> <level value="INFO" /> <appender-ref ref="consoleAppender"/> </logger> <logger name="org.hibernate.connection.C3P0ConnectionProvider" additivity="false"> <level value="INFO" /> <appender-ref ref="consoleAppender"/> </logger> <logger name="com.mchange" additivity="false"> <level value="WARN" /> <appender-ref ref="consoleAppender"/> </logger> <logger name="com.mchange.v2.resourcepool.BasicResourcePool" additivity="false"> <level value="INFO" /> <appender-ref ref="consoleAppender"/> </logger> <logger name="com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource" additivity="false"> <level value="INFO" /> <appender-ref ref="consoleAppender"/> </logger> <logger name="com.mchange.v2.c3p0.C3P0Registry" additivity="false"> <level value="INFO" /> <appender-ref ref="consoleAppender"/> </logger> <root> <priority value ="WARN" /> <appender-ref ref="consoleAppender"/> </root></log4j:configuration>这为我提供了JUnit类的信息级输出,以及Hibernate运行时和Hibernate使用的其他库中的一些有用信息。适应自己的口味。
最后,当我执行JUnit测试时,我需要确保以下所有库都在我的类路径中:
slf4j-api-1.6.0.jar
slf4j-log4j12-1.6.0.jar
log4j-1.2.16.jar
log4j.xml
(我的配置文件,如上所示)- 某些版本的JUnit运行时JAR
- 在生产环境中运行应用程序时,通常会显示所有JAR
这是我在使用log4j时所做的。如果使用其他日志记录实现,请进行相应调整。只要您使用的是不同版本的slf4j,都没关系,只要“
API”和实现JAR是相同的版本(我的都是1.6.0)即可。



