Maison >Java >javaDidacticiel >Comment JUnit peut-il tester efficacement la sortie « System.out.println() » ?

Comment JUnit peut-il tester efficacement la sortie « System.out.println() » ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-28 16:17:54177parcourir

How Can JUnit Effectively Test `System.out.println()` Output?

Test JUnit pour la sortie System.out.println()

Dans les applications existantes, le dépannage peut être difficile lorsqu'on s'appuie uniquement sur les messages d'erreur standard imprimé sur la console. Pour atténuer ce problème, JUnit fournit des méthodes pour capturer et affirmer la sortie de la console.

Pour tester la sortie System.out.println(), envisagez l'approche suivante :

  1. Initialiser Output Capture :

    • Créer des objets ByteArrayOutputStream (par exemple, outContent et errContent) pour stocker les flux de sortie et d'erreur.
    • Utilisez System.setOut(new PrintStream(outContent)) et System.setErr(new PrintStream(errContent)) pour rediriger les flux de console vers ces objets.
  2. Exécuter Tests :

    • Appelez System.out.println(output) ou System.out.print(output) dans la méthode de test pour capturer la sortie prévue.
  3. Sortie d'affirmation :

    • Utilisez le Méthode assertEquals(expected, actual) pour comparer la sortie capturée (outContent ou errContent) avec la sortie attendue.

Exemples de cas de test :

@Test
public void testOut() {
    System.out.print("hello");
    assertEquals("hello", outContent.toString());
}

@Test
public void testErr() {
    System.err.print("error occurred");
    assertEquals("error occurred", errContent.toString());
}

Remarque : Assurez-vous que les appels System.setOut() et System.setErr() sont annulés après chaque test en utilisant originalOut et originalErr. Ne pas le faire peut entraîner des NullPointerExceptions lors des tests ultérieurs.

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