2009-10-15 6 views
4

J'utilise log4j et je souhaite que les messages de journalisation qui se retrouvent normalement dans ma fonction de journalisation apparaissent dans les rapports de test créés par TestNG lors de mes tests unitaires.Existe-t-il un appender log4j qui se connecte à TestNG?

Je pense que cela signifierait un log4j Appender qui sort à un TestNG Listener et une configuration log4j appropriée dans le répertoire src/test/répertoire des ressources de mon projet Maven. Est-ce exact?

Il semble assez facile à écrire, mais y a-t-il quelque chose que je peux simplement utiliser via Maven?

+0

Ce fil StackOverflow pourrait être pertinent pour votre question: http://stackoverflow.com/questions/473911/testng-multiple-suites-possible-to-merge-reports – Adrian

Répondre

3

J'ai eu le même problème et, éventuellement, un appender moi-même codé. Il est en fait assez simple:

Copie la classe suivante:

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

et le configurer comme un appender de la console. Par exemple. comme ceci:

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% 
Questions connexes