7 Stimmen

Gibt es einen log4j-Appender, der sich mit TestNG verbindet?

Ich verwende log4j und möchte, dass Protokollmeldungen, die normalerweise in meiner Protokollierungseinrichtung landen, in den von TestNG während meiner Unit-Tests erstellten Testberichten erscheinen.

Ich denke, das würde bedeuten, dass ein log4j Appender die an ein TestNG ausgibt Listener und eine entsprechende log4j-Konfiguration im Verzeichnis src/test/resources meines Maven-Projekts. Ist das korrekt?

Es scheint ziemlich einfach zu schreiben, aber gibt es etwas, das ich einfach in über Maven ziehen kann?

7voto

yankee Punkte 35636

Ich hatte das gleiche Problem und habe schließlich selbst einen Appender programmiert. Es ist eigentlich ganz einfach:

Kopieren Sie die folgende Klasse:

public class TestNGReportAppender extends AppenderSkeleton {

  @Override
  protected void append(final LoggingEvent event) {
    Reporter.log(eventToString(event));
  }

  private String eventToString(final LoggingEvent event) {
    final StringBuilder result = new StringBuilder(layout.format(event));

    if(layout.ignoresThrowable()) {
      final String[] s = event.getThrowableStrRep();
      if (s != null) {
        for (final String value : s) {
          result.append(value).append(Layout.LINE_SEP);
        }
      }
    }
    return result.toString();
  }

  @Override
  public void close() {

  }

  @Override
  public boolean requiresLayout() {
    return true;
  }
}

und konfigurieren Sie es genau wie einen Konsolen-Appender. Z.B. so:

log4j.appender.testNG=some.package.TestNGReportAppender
log4j.appender.testNG.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.testNG.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%

1voto

Adrian Punkte 5813

Dieser Beitrag könnte Ihnen ebenfalls helfen:

" Integration der Commons-Logging-Ausgabe in testNG-Testfallberichte "

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X