Maison >Java >javaDidacticiel >Comment tester la sortie de la console dans JUnit ?

Comment tester la sortie de la console dans JUnit ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-22 07:02:30572parcourir

How to Test Console Output in JUnit?

Test de la sortie de la console dans JUnit

Lorsque vous testez des applications existantes avec une mauvaise conception, vous pouvez rencontrer du code qui écrit des messages d'erreur sur la sortie standard. Pour affirmer une telle sortie de console dans JUnit, vous avez besoin d'un moyen de rediriger et de capturer la sortie.

Redirection de la sortie de la console

Le système Java peut être configuré pour envoyer la sortie de la console à des flux spécifiés. Nous pouvons exploiter ce mécanisme pour capturer et tester la sortie.

Capturer la sortie avec ByteArrayOutputStream

Un ByteArrayOutputStream peut être utilisé pour capturer la sortie de la console. Pour ce faire, nous remplaçons les flux de sortie standard par de nouveaux flux qui écrivent dans ByteArrayOutputStream.

Exemple :

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);
}

Test de la sortie de la console

Une fois la sortie capturée, nous pouvons affirmer son contenu à l'aide de JUnit Méthode assertEquals().

Exemples de cas de test :

@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());
}

Conclusion

En redirigeant la sortie de la console vers ByteArrayOutputStreams et en utilisant System.setXXX() pour configurer les flux système, vous pouvez tester et affirmer efficacement la sortie de la console dans votre JUnit tests.

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