Maison > Java > javaDidacticiel > Comment simuler la saisie utilisateur dans System.in pour les tests JUnit ?

Comment simuler la saisie utilisateur dans System.in pour les tests JUnit ?

Susan Sarandon
Libérer: 2024-11-03 14:44:02
original
584 Les gens l'ont consulté

How to Simulate User Input in System.in for JUnit Testing?

Simulation des entrées utilisateur dans System.in pour les tests JUnit

JUnit offre un cadre de test robuste pour les applications Java, permettant aux développeurs de vérifier la fonctionnalité du code . Cependant, les programmes qui interagissent avec System.in, tels que les applications en ligne de commande, présentent un défi unique en matière de tests. Cet article explique comment simuler la saisie utilisateur dans System.in dans un scénario de test JUnit.

Solution

Modifier directement System.in est techniquement réalisable mais non recommandé. Au lieu de cela, il est préférable d’implémenter une couche d’indirection qui contrôle la source d’entrée au sein de l’application. Ceci peut être réalisé par différentes méthodes :

Injection de dépendances

Les frameworks d'injection de dépendances, tels que Spring ou Guice, permettent l'injection de dépendances dans les classes. Cela permet de transmettre la source d'entrée en tant que dépendance, ce qui permet des tests flexibles et un découplage du code à partir de sources d'entrée spécifiques.

Redirection manuelle des entrées

Pour les situations où la dépendance l'injection n'est pas pratique, System.in peut être redirigé manuellement à l'aide de l'extrait de code suivant :

<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

En utilisant ces techniques, les développeurs peuvent simuler efficacement les entrées de l'utilisateur dans System.in pendant les tests JUnit, garantissant ainsi des tests approfondis de applications en ligne de commande et autres programmes pilotés par les entrées.

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