Simulation de System.in pour les tests JUnit
Tester des programmes en ligne de commande Java qui s'appuient sur les entrées utilisateur de System.in peut poser un défi dans les cas de test JUnit. Pour simuler la saisie de l'utilisateur, JUnit fournit un mécanisme permettant de remplacer le flux d'entrée standard par un flux d'entrée que vous pouvez contrôler dans votre test.
Solution :
Vous pouvez simuler System.in en créant une chaîne contenant l'entrée souhaitée et en la convertissant en ByteArrayInputStream. Voici un exemple d'extrait de code :
<code class="java">String data = "Hello, World!\r\n"; InputStream stdin = System.in; try { System.setIn(new ByteArrayInputStream(data.getBytes())); Scanner scanner = new Scanner(System.in); System.out.println(scanner.nextLine()); } finally { System.setIn(stdin); }</code>
Ce code capturera l'entrée de ByteArrayInputStream et la simulera comme entrée de l'utilisateur lors de l'exécution du programme. Dans le bloc try-with-resources, vous pouvez accéder à l'entrée simulée à l'aide de la classe Scanner.
Remarque : Il est généralement recommandé de supprimer les appels directs à System.in dans votre code pour améliorer la testabilité. Ceci peut être réalisé grâce à l'injection de dépendances ou à d'autres techniques d'indirection.
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!