7
votes

Capturer la sortie log4j lors de l'exécution des tests de test

Je suis exécutant des tests de test, et la sortie de journalisation est définie sur débogage , donc en cas d'échec, je peux avoir à inspecter exactement ce qui ne va pas.

Le problème est que la sortie est extrêmement verbeuse et que tout le monde manque à tout le monde. Je voudrais capturer tous les événements de journalisation de Log4J - qui est facile - et ne les imprime que lorsque le test échoue. De plus, je dois prendre en compte @ avant / @ après méthodes et imprimer une sortie pour eux.

En supposant que j'ai déjà une liste de log4j Loggockevent S, comment puis-je imprimer celles uniquement lorsque le test Test / après / / Avant Méthodes échoue?


0 commentaires

4 Réponses :


1
votes

Implémenter et enregistrer un org .testag.itestlistener et réagissez sur les méthodes de rappel.


1 commentaires

lien est bouché, robert



2
votes

Ce site a une explication sur la façon de le faire. . J'ai copié la partie de code ici au cas où le lien est mort.

Logger.getLogger(this.getClass())
log4j.rootLogger=ERROR,TESTAPPENDER
log4j.appender.TESTAPPENDER=com.my.fantastic.MockedAppender
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;

public class FooTest {
    private Appender appenderMock;
    @Before
    public void setupAppender() {
        appenderMock = mock(Appender.class);
        Logger.getRootLogger().addAppender(appenderMock);
    }
    @After
    public void removeAppender() {
        Logger.getRootLogger().removeAppender(appenderMock);
    }
    @Test
    public void testMethod()  {
        doStuffThatCausesLogging();
        verify(appenderMock).doAppend((LoggingEvent) anyObject());
    }
}

ArgumentCaptor arguments = ArgumentCaptor.forClass(LoggingEvent.class);
verify(appenderMock).doAppend(arguments.capture());


3 commentaires

Merci, c'est en quelque sorte liée, mais pas ce que je cherche.


Ne répond pas à la question.


@ user43685: Vous avez raison, j'ai ajouté un code source pour en faire une réponse moins déchets.



4
votes

Utilisez reporter.log (STR) pour enregistrer le message sur le rapport. xxx


0 commentaires

0
votes

mettre jmockit dans des dépendances. Avec le test de journalisation informatique, il est très facile.

Mettre en classe de test: P>

    testedFunction(a, b, c);
    new Verifications() {{
        logging.error("The message that should be output");
        logging.info("Another message");
    }};


0 commentaires