Ich verwende Logback mit SLF4J (migrieren von log4j) und wenn ich einen Junit-Test ausführen, der fehlschlägt, wird der Grund, warum der Test fehlschlägt, nicht angezeigt (AssertionFailedError: erwartet ist <> aber war <>)Die Junit-Nachricht (erwartet wurde ...) wird nicht in der Konsole mit Logback angezeigt
Alle anderen Protokolle werden ausgeführt.
Meine logback Konfiguration:
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %msg%n</pattern>
</encoder>
<filter class="com.jle.athleges.logback.TrashFilter">
<logger>org.springframework</logger>
<level>ERROR</level>
</filter>
</appender>
<appender name="TRASH_FILE_APPENDER"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/logback_trash.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>logs/trash.log.%d{yyyy-MM-dd-HH-mm}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<logger name="org.springframework">
<appender-ref ref="TRASH_FILE_APPENDER" />
</logger>
<root level="debug">
<appender-ref ref="STDOUT" />
<appender-ref ref="TRASH_FILE_APPENDER" />
</root>
My Unit Test:
@Test
public void getAllMembers() {
log.debug("Start getAllMember");
long sizeBefore = repository.count();
Member a = new Member();
a.setFirstname("aaa");
a.setLastname("hhh");
a.setId(2L);
Member b = new Member();
b.setFirstname("aaa");
b.setLastname("hhh");
b.setId(1L);
memberService.save(a);
memberService.save(b);
Assert.assertTrue(memberService.getAll().size() == 0);
log.debug("End getAllMember");
}
Wie Sie meinen Dienst Rückkehr mehr als 0 Elemente sehen und mein Test nicht bestanden. So erhalte ich diese Meldung:
java.lang.AssertionError
at org.junit.Assert.fail(Assert.java:86)
at org.junit.Assert.assertTrue(Assert.java:41)
at org.junit.Assert.assertTrue(Assert.java:52)
at com.jle.athleges.test.integration.MemberServiceImpTest.getAllMembers(MemberServiceImpTest.java:72)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at ...
Mit Log4J die Aussage war java.lang.AssertionError < Erwartete 0> wurde < 2>
Auch wenn ich DEBUG statt ERROR, das Ergebnis ist das gleiche .
Ich verstehe nicht, warum der Teil < 0 Erwartete> wurde < 2> nicht angezeigt wird
Dank
Unit-Test-Ausgabe verwendet kein Protokollierungsframework afaik. Dies ist nicht verwandt. Sende deinen Unit Test Code und wir werden uns das ansehen –
Nein, aber in der JUnit View Eclipse denke ich, dass ich erwartet sehen sollte. Und in der Konsole genauso. Nein ? –
ich meinen Zweig wechseln, ohne Logback (so usinf log4j), und wenn ich den Test ausführen (genau das gleiche), I receveive diese Meldung: java.lang.AssertionError: erwartet: <0> aber war: <2> \t bei org.junit .Assert.fail (Assert.java:88) \t bei org.junit.Assert.failNotEquals (Assert.java:834) ... –