IDEA中单元测试使用Scanner控制台无法输入

今天使用IDEA,Junit使用Scanner控制台无法输入,我以为是代码的问题。于是把单元测试换成了main函数

1、使用单元测试

@Test
public void test()throws Exception{
    
    
    //从键盘输入用户信息,添加到day04_test01_bookstore库的users表中
    Scanner input = new Scanner(System.in);

    System.out.print("请输入用户名:");
    String username = input.next();

    System.out.print("请输入密码:");
    String password = input.next();

    System.out.print("请输入邮箱:");
    String email = input.next();

    //1、注册驱动
    Class.forName("com.mysql.jdbc.Driver");

    //2、获取连接
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test01_bookstore?useUnicode=true&characterEncoding=utf8", "root", "123456");

    //3、编写sql
    String sql = "insert into users values(null,?,password(?),?)";

    //4、创建PreparedStatement
    PreparedStatement pst = conn.prepareStatement(sql);//此时的sql带?的

    //加入一步,设置?的值
    pst.setString(1, username);//1表示第1个?
    pst.setString(2, password);//2表示第2个?
    pst.setString(3, email);//3表示第3个?

    //5、执行sql
    int len = pst.executeUpdate();
    System.out.println(len>0?"添加成功":"添加失败");

    //6、关闭
    pst.close();
    conn.close();
    input.close();
}

2、使用main函数

package Connection4;

import org.junit.Test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

/**
 * @author shkstart
 * @create 2021-08-24 13:35
 */

public class Test04 {
    
    

    public static void main(String[] args) throws Exception {
    
    
        Test04 test04 = new Test04();
        test04.test();
    }

    public void test() throws Exception {
    
    
        //从键盘输入用户信息,添加到day04_test01_bookstore库的users表中
        Scanner input = new Scanner(System.in);

        System.out.print("请输入用户名:");
        String username = input.next();

        System.out.print("请输入密码:");
        String password = input.next();

        System.out.print("请输入邮箱:");
        String email = input.next();

        //1、注册驱动
        Class.forName("com.mysql.jdbc.Driver");

        //2、获取连接
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test01_bookstore?useUnicode=true&characterEncoding=utf8", "root", "123456");

        //3、编写sql
        String sql = "insert into users values(null,?,password(?),?)";

        //4、创建PreparedStatement
        PreparedStatement pst = conn.prepareStatement(sql);//此时的sql带?的

        //加入一步,设置?的值
        pst.setString(1, username);//1表示第1个?
        pst.setString(2, password);//2表示第2个?
        pst.setString(3, email);//3表示第3个?

        //5、执行sql
        int len = pst.executeUpdate();
        System.out.println(len > 0 ? "添加成功" : "添加失败");

        //6、关闭
        pst.close();
        conn.close();
        input.close();
    }
}

在这里插入图片描述
那到底单元测试能不能使用Scanner呢,答案是能的

解决方法:

1、 打开IDEA安装根目录下的bin文件夹,找到idea.exe.vmoptions和idea64.exe.vmoptions这两个文件
在这里插入图片描述

2、用记事本或者EditPlus 或者直接在idea中编辑这两个文件
添加-Deditable.java.test.console=true
注意:是两个文件都要添加
idea.exe.vmoptions文件
在这里插入图片描述idea64.exe.vmoptions文件
在这里插入图片描述

然后就可以输入了。

おすすめ

転載: blog.csdn.net/weixin_46457946/article/details/119892535