版本是2024社区版,在使用单元测试时,无法使用scanner进行输入,输入时显示此视图为只读。
4条回答 默认 最新
阿里嘎多学长 2025-05-09 21:30关注阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
IDEA中Junit使用Scanner控制台无法输入
你遇到的问题是,在使用IDEA的Junit单元测试时,无法使用Scanner控制台进行输入,输入时显示为只读。
解决方案:
- 在Junit测试类中,使用
System.setIn方法将System.in设置为一个新的InputStream对象,这样可以使Scanner控制台可读写。
import java.io.ByteArrayInputStream; import java.io.InputStream; public class MyTest { @Before public void setUp() { InputStream in = new ByteArrayInputStream("输入的内容".getBytes()); System.setIn(in); } }- 在Junit测试类中,使用
System.console方法获取控制台对象,然后使用Reader对象读取输入。
import java.io.Console; import java.io.Reader; public class MyTest { @Before public void setUp() { Console console = System.console(); Reader reader = console.reader(); // 读取输入 String input = reader.readLine(); } }- 如果你使用的是IDEA的Built-in Test Runner,可以在Settings中配置Built-in Test Runner的输入方式为"Console"。
这些方法都可以解决Junit单元测试中Scanner控制台无法输入的问题。
解决 无用评论 打赏 举报- 在Junit测试类中,使用