JUnit test grâce à la simulation de la saisie de l'utilisateur

Je suis en train de créer des tests JUnit pour une méthode qui nécessite la saisie de l'utilisateur. La méthode de test ressemble un peu à la méthode suivante:

public static int testUserInput() {
    Scanner keyboard = new Scanner(System.in);
    System.out.println("Give a number between 1 and 10");
    int input = keyboard.nextInt();

    while (input < 1 || input > 10) {
        System.out.println("Wrong number, try again.");
        input = keyboard.nextInt();
    }

    return input;
}

Est-il possible de transmettre automatiquement le programme d'un int au lieu de moi ou de quelqu'un d'autre de le faire manuellement dans le test JUnit méthode? De simuler la saisie de l'utilisateur?

Merci d'avance.

  • De quoi êtes-vous tests, exactement? Scanner? Une méthode de test doivent généralement faire valoir quelque chose d'utile.
  • Vous ne devriez pas avoir à tester Java de la classe Scanner. Vous pouvez manuellement régler votre entrée et simplement tester votre propre logique. d'entrée int = -1 ou 5 ou 11 couvrira votre logique
  • Six ans plus tard... et c'est toujours une bonne question. Pas moins parce que quand on commence à développer une app, vous pouvez généralement veulent pas avoir toutes les cloches et de sifflets de JavaFX, mais au lieu de commencer à utiliser l'humble ligne de commande pour un peu très de base de l'interaction. Dommage que JUnit ne font de ce fait un peu plus facile. Pour moi, Omar Elshal la réponse est très agréable, avec un minimum de "artificiel" ou "déformées" application de codage en cause...
InformationsquelleAutor Wimpey | 2011-06-20