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