Maison >Java >javaDidacticiel >Comment affirmer les messages du journal à l'aide de 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!