Zhou Guanyu 2025-05-09 21:30 采纳率: 0%
浏览 25

IDEA中Junit使用Scanner控制台无法输入

版本是2024社区版,在使用单元测试时,无法使用scanner进行输入,输入时显示此视图为只读。

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-05-09 21:30
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    IDEA中Junit使用Scanner控制台无法输入

    你遇到的问题是,在使用IDEA的Junit单元测试时,无法使用Scanner控制台进行输入,输入时显示为只读。

    解决方案:

    1. 在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);
        }
    }
    
    1. 在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();
        }
    }
    
    1. 如果你使用的是IDEA的Built-in Test Runner,可以在Settings中配置Built-in Test Runner的输入方式为"Console"。

    这些方法都可以解决Junit单元测试中Scanner控制台无法输入的问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月9日