Maison  >  Article  >  Java  >  Comment puis-je simuler les entrées utilisateur de System.in pour les tests JUnit ?

Comment puis-je simuler les entrées utilisateur de System.in pour les tests JUnit ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-01 10:32:02449parcourir

How Can I Mock User Input from System.in for JUnit Testing?

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!

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