带有Logback的Slf4j日志记录的JUnit:仅在第一个测试方法中记录

时间:2014-01-28 15:02:12

标签: java logging junit slf4j logback

我的JUnit-Test有一些奇怪的行为,它使用SLF4j和Logback进行日志记录。日志记录在第一个测试注释方法中完美运行,但在以下方法中失败。 顺便说一句:没有经过测试注释的测试按预期工作。只有测试方法失败。

这是我的测试类:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyTest {
    private static final Logger logger = LoggerFactory.getLogger(MyTest.class);

    @Test
    public void testLoggingWorksInFirstTestMethod() throws Exception {
        logger.info("testLoggingIsVisible");    // works always
    }

    @Test
    public void testLoggingDoesntWorkAfterFirstTestMethod() throws Exception {
        logger.info("invisible");       // works never
    }
}

这是我的配置(logback.xml):

<configuration scan="true" scanPeriod="30 seconds" debug="false">
    <contextName>tradefnd</contextName>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>
                <!-- %d{HH:mm:ss.SSS} %-5level %logger{36} %method %line - %msg%n -->
                %d{HH:mm:ss.SSS} %msg%n
            </pattern>
        </encoder>
    </appender> 
    <logger name="com.db.tradefinder.selenium" level="info">
        <appender-ref ref="STDOUT" />
    </logger>
</configuration>

这是我的类路径:slf4j-api-1.7.2.jar,logback-classic-1.0.7.jar,logback-core-1.0.7.jar

我已经尝试过:

  1. 更新到较新的SLF4j版本(FAIL)
  2. 尝试java.util.Logger:有效,但我会花很多时间重新实现
  3. 尝试使用log4j(FAIL)SLF4j
  4. 有什么想法吗?

2 个答案:

答案 0 :(得分:0)

代码是正确的,这应该有效。清除工作目录并再次启动。这可能是IDE开发过程中的一个小问题。

答案 1 :(得分:0)

感谢您的回答。这是我从某人手中接过的代码,所以我在一个非常隐藏的方法中,在一个继承的类中监视一个LoggerFactory.stop()(出于某种原因)。