7

log4jを使用しており、通常はログ機能に記録されるログメッセージを、単体テスト中にTestNGによって作成されたテストレポートに表示したいと考えています。

Appenderこれは、TestNGに出力するlog4jListenerと、Mavenプロジェクトのsrc / test/resourcesディレクトリにある適切なlog4j構成を意味すると思います。あれは正しいですか?

書くのはかなり簡単なようですが、Mavenを介して引き込むことができるものはありますか?

4

2 に答える 2

7

私は同じ問題を抱えていて、最終的に自分でアペンダーをコーディングしました。実際には非常に簡単です。

次のクラスをコピーします。

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;
  }
}

コンソールアペンダーのように設定します。たとえば、次のようにします。

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%
于 2014-01-13T14:21:39.537 に答える
1

この投稿も役立つ場合があります。

" Commons-logging の出力を testNG テスト ケース レポートと統合する"

于 2009-10-23T14:56:42.413 に答える