Мне также нравится использовать slf4j в моих тестах JUnit для моего класса DAO.Это помогает, когда вы создаете новый тест или модифицируете старый.Я обычно оставляю свои старые результаты регистрации на уровне отладки и делаю свои новые инструкции регистрации на уровне информации, в то время как я все еще активно работаю над кодом в этом методе.Один из моих классов 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" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<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.Настройте по своему вкусу.
Наконец, мне нужно убедиться, что все следующие библиотеки находятся в моем classpath при выполнении тестов 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).