JUnit mit Slf4j-logging mit Logback: Protokollierung nur in der ersten test-Methode
Habe ich ein seltsames Verhalten mit meinem JUnit-Test, der verwendet mit SLF4j Logback für die Protokollierung. Protokollierung der perfekt funktioniert in den ersten test-annotierten Methode, scheitert aber in den folgenden Methoden.
BTW: Tests, die nicht-test-kommentiert, wie erwartet. Nur test-Methoden Versagen.
Dies ist meine Test-Klasse:
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
}
}
Und hier ist meine Konfiguration (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>
Dies ist mein classpath: slf4j-api-1.7.2.jar, logback-classic-1.0.7.jar, logback-core-1.0.7.jar
Was ich bereits versucht:
- Update auf eine neuere SLF4j-version (FAIL)
- Versucht, java.util.Logger: funktioniert, aber ich würde viel Zeit in Anspruch zu implementieren Dinge
- Versucht mit SLF4j log4j (FAIL)
Irgendwelche Ideen?
- Welche version von JUnit? Auch bieten die volle Quelle der MyTest - wie z.B. der import für @Test fehlt - es könnte auch etwas anderes sein, dass ist das verursachen problem. Versucht, in sauber maven-Projekt und funktioniert wie erwartet/
- Ich bin mit JUnit 4.11. Der import import org.junit.Test. Aber ich denke, du hast Recht, das problem wird wohl woanders liegen. Wenn ich entfernen Sie die @Test-Annotation, der logger funktioniert immer. So wie es aussieht JUnit könnte, reset der logger.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der code ist korrekt und sollte funktionieren. Klar Ihr Arbeitsverzeichnis und starten Sie erneut. Dies könnte ein Schluckauf während der Entwicklung in der IDE.
Danke für die Antworten. Dies war der code, den ich übernahm und von jemand, der so überwachte ich in einem der geerbten Klassen eine LoggerFactory.stop() in einer sehr versteckten Methode an einem unerwarteten Ort (warum auch immer).