Maison >Java >javaDidacticiel >Comment affirmer les messages du journal à l'aide de JUnit ?

Comment affirmer les messages du journal à l'aide de JUnit ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-31 12:43:30850parcourir

How to Assert on Log Messages Using JUnit?

Comment affirmer les messages du journal à l'aide de JUnit

De nombreuses applications utilisent des frameworks de journalisation pour suivre leur exécution et capturer tout problème potentiel. Lors du test de telles applications, il devient important de vérifier que les entrées de journal correctes ont été effectuées.

Utilisation d'un appender personnalisé

Pour affirmer les messages de journal, une approche consiste à créez un appender personnalisé qui peut intercepter et stocker les événements du journal. Cela nous permet de récupérer et d'inspecter les messages enregistrés après l'exécution du code testé.

Implémentation d'un appender de test

Pour créer un appender personnalisé, étendez la classe AppenderSkeleton et implémentez la méthode append. Cette méthode doit capturer et stocker les événements du journal dans une structure de données, telle qu'une liste. N'oubliez pas d'ajouter l'appender personnalisé à l'enregistreur souhaité.

Exemple d'implémentation

Vous trouverez ci-dessous un exemple d'implémentation d'un appender de test :

<code class="java">import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.LoggingEvent;
import java.util.ArrayList;
import java.util.List;

public class TestAppender extends AppenderSkeleton {
    private final List<LoggingEvent> log = new ArrayList<>();             

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

    @Override
    protected void append(final LoggingEvent loggingEvent) {
        log.add(loggingEvent);
    }

    @Override
    public void close() {
    }

    public List<LoggingEvent> getLog() {
        return new ArrayList<>(log);
    }
}</code>

Utilisation de l'appender de test dans JUnit

L'appender de test peut être ajouté et supprimé de l'enregistreur dans la méthode de test JUnit. Voici un exemple de test JUnit qui démontre son utilisation :

<code class="java">import org.junit.Test;
import org.apache.log4j.Logger;
import static org.junit.Assert.assertThat;
import java.util.List;
import java.util.Level;

public class JUnitLogAssert {

    @Test
    public void test() {
        final TestAppender appender = new TestAppender();
        final Logger logger = Logger.getRootLogger();
        logger.addAppender(appender);

        // Execute code under test that logs messages

        logger.removeAppender(appender);
        final List<LoggingEvent> log = appender.getLog();

        // Assert on the captured log entries
        assertThat(log.get(0).getLevel(), is(Level.INFO));
        assertThat((String) log.get(0).getMessage(), is("Test"));
    }
}</code>

Conclusion

En créant un appender personnalisé et en interceptant les événements du journal, nous pouvons facilement affirmer sur le journal messages générés par le code testé. Cette technique fournit un moyen simple et efficace de vérifier le comportement de journalisation des composants de l'application.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn