gpt4 book ai didi

java - 如何对读取 Java 输入的类进行单元测试?

转载 作者:行者123 更新时间:2023-12-02 18:18:14 26 4
gpt4 key购买 nike

如何针对从 System.in 读取用户输入的类运行测试?

例如:

private int getUserInput() {
Scanner scanner = new Scanner(System.in);

System.out.print("What's ya input? [1-3]: ");
return scanner.nextInt();
}

我想也许可以对主类进行子类化并覆盖 getUserInput 以反馈脚本化答案。但如果您需要读取 System.out 来决定输入,这将不起作用。

我花了几个小时查找线程,但也不知道如何使用它们。

最佳答案

嗯,您可以使用System.setIn()替换System.in,但我不赞成这种方法。设置全局状态总是会让您的测试变得更加脆弱和不透明。

相反,您应该真正尝试打破依赖关系,例如通过类的构造函数将您想要读取的InputStream注入(inject)到您的类中。一旦你这样做了,当你对其进行单元测试时,你可以传入你自己的从静态数据读取的InputStream,并且在你的生产代码中你可以注入(inject)System.in

关于java - 如何对读取 Java 输入的类进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8106506/

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