【发布时间】:2011-09-18 22:23:41
【问题描述】:
我正在尝试为需要用户输入的方法创建一些 JUnit 测试。被测方法有点像下面的方法:
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;
}
有没有一种可能的方法来自动传递程序一个 int 而不是我或其他人在 JUnit 测试方法中手动执行此操作?喜欢模拟用户输入?
提前致谢。
【问题讨论】:
-
你到底在测试什么?扫描器?测试方法通常应该断言有用的东西。
-
您不必测试 Java 的 Scanner 类。您可以手动设置输入并简单地测试您自己的逻辑。 int input = -1 或 5 或 11 将涵盖您的逻辑
-
六年后……这仍然是一个好问题。尤其是因为在开始开发应用程序时,您通常可能不想拥有 JavaFX 的所有花里胡哨,而是开始使用不起眼的命令行进行一些非常基本的交互。遗憾的是 JUnit 并没有让这变得更容易。对我来说,Omar Elshal 的回答非常好,涉及到最少的“人为”或“扭曲”应用程序编码......
标签: java eclipse junit user-input