gpt4 book ai didi

java - 使用模拟用户输入进行 JUnit 测试

转载 作者:IT老高 更新时间:2023-10-28 13:51:12 24 4
gpt4 key购买 nike

我正在尝试为需要用户输入的方法创建一些 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 测试方法中手动执行此操作?喜欢模拟用户输入?

提前致谢。

最佳答案

您可以替换 System.in with you own stream by calling System.setIn(InputStream in) .InputStream 可以是字节数组:

InputStream sysInBackup = System.in; // backup System.in to restore it later
ByteArrayInputStream in = new ByteArrayInputStream("My string".getBytes());
System.setIn(in);

// do your thing

// optionally, reset System.in to its original
System.setIn(sysInBackup);

通过将 IN 和 OUT 作为参数传递,不同的方法可以使该方法更具可测试性:

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

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

return input;
}

关于java - 使用模拟用户输入进行 JUnit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6415728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com