Maison > Java > javaDidacticiel > 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
Libérer: 2024-11-01 10:32:02
original
606 Les gens l'ont consulté

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>
Copier après la connexion

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal