Maison > Java > javaDidacticiel > Comment tester les sorties System.out et System.err dans JUnit ?

Comment tester les sorties System.out et System.err dans JUnit ?

DDD
Libérer: 2024-12-17 16:31:11
original
161 Les gens l'ont consulté

How to Test System.out and System.err Output in JUnit?

Test de la sortie du système dans JUnit

Dans les systèmes existants, les applications peuvent imprimer des messages d'erreur ou des informations de débogage sur la sortie standard au lieu de renvoyer explicitement les erreurs . Tester une telle sortie peut être difficile avec JUnit.

Problème :

Les tests unitaires nécessitent un moyen d'affirmer le contenu de la sortie de la console pour détecter les cas où System.out. println() est utilisé à la place d'une erreur appropriée manipulation.

Solution :

L'utilisation de ByteArrayOutputStream et System.setXXX() nous permet de rediriger la sortie du système et de la capturer pour les tests.

Mise en œuvre :

private final ByteArrayOutputStream outContent = new ByteArrayOutputStream();
private final ByteArrayOutputStream errContent = new ByteArrayOutputStream();
private final PrintStream originalOut = System.out;
private final PrintStream originalErr = System.err;

@Before
public void setUpStreams() {
    System.setOut(new PrintStream(outContent));
    System.setErr(new PrintStream(errContent));
}

@After
public void restoreStreams() {
    System.setOut(originalOut);
    System.setErr(originalErr);
}
Copier après la connexion

Test Cas :

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

@Test
public void err() {
    System.err.print("hello again");
    assertEquals("hello again", errContent.toString());
}
Copier après la connexion

Remarque :

Les versions antérieures de cette réponse appelées System.setOut(null) après les tests. C'est la cause des commentateurs NullPointerExceptions mentionnés.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal