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>
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!