J'essaie de créer des tests JUnit pour une méthode qui nécessite une entrée utilisateur. La méthode testée 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;
}
Existe-t-il un moyen de passer automatiquement un int au programme au lieu que moi ou quelqu'un d'autre le fasse manuellement dans la méthode de test JUnit ? Comme simuler l'entrée de l'utilisateur ?
Merci d'avance.
7 votes
Que testez-vous, exactement ? Un scanner ? Une méthode de test doit typiquement affirmer quelque chose pour être utile.
2 votes
Vous ne devriez pas avoir à tester la classe Scanner de Java. Vous pourriez définir manuellement votre entrée et simplement tester votre propre logique. int input = -1 ou 5 ou 11 couvrira votre logique
3 votes
Six ans plus tard... et c'est toujours une bonne question. Notamment parce que lorsque vous commencez à développer une application, vous n'avez généralement pas envie d'avoir toutes les cloches et les sifflets de JavaFX, mais plutôt de commencer à utiliser l'humble ligne de commande pour un peu d'interaction très basique. Il est dommage que JUnit ne rende pas cela un peu plus facile. Pour moi, la réponse d'Omar Elshal est très bien, avec un minimum de codage d'applications "artificielles" ou "déformées"...