Maison  >  Article  >  Java  >  Comment simuler la saisie utilisateur dans les tests JUnit pour les programmes de ligne de commande ?

Comment simuler la saisie utilisateur dans les tests JUnit pour les programmes de ligne de commande ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-28 14:41:02297parcourir

How Can You Simulate User Input in JUnit Tests for Command-Line Programs?

Simulation des tests System.in avec JUnit

Dans le domaine des tests logiciels, on est souvent confronté au défi de simuler les entrées des utilisateurs lorsqu'il s'agit de programmes en ligne de commande. Lorsqu'un programme demande une entrée via System.in, comment automatiser ce comportement dans les tests JUnit ?

Solution

Pour contourner System.in et injecter une entrée utilisateur simulée , suivez ces étapes :

  1. Établissez une couche d'abstraction :
    Évitez d'appeler directement System.in dans votre code. Introduisez une couche d’abstraction pour gérer la source d’entrée. Vous pouvez y parvenir via l'injection de dépendances ou en passant un contexte d'E/S.
  2. Changez System.in de manière dynamique :
    Utilisez les flux Java 8 pour manipuler le System.in flux. Par exemple :

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