Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 能否为CLI应用程序运行JUnit测试?_Java_Unit Testing_Junit - Fatal编程技术网

Java 能否为CLI应用程序运行JUnit测试?

Java 能否为CLI应用程序运行JUnit测试?,java,unit-testing,junit,Java,Unit Testing,Junit,我对Java中的单元测试比较陌生,我完全用CLI制作了一个应用程序。示例一旦启动应用程序,用户就会得到一组类似这样的选项 登记册 登录 . . . 等等 如果他选择登录,他将被转移到一个Register()方法,该方法在方法本身中询问诸如姓名等详细信息。 我想知道,在创建单元测试时,是否有任何方法可以模拟用户输入,或者是否必须重写这些方法,以便通过参数传递值并以这种方式进行单元测试。理想情况下,您的代码应该编写得易于测试,并且输入方法无关紧要。这意味着输入应该与业务逻辑分离,以便在编写测试时完全

我对Java中的单元测试比较陌生,我完全用CLI制作了一个应用程序。示例一旦启动应用程序,用户就会得到一组类似这样的选项

  • 登记册
  • 登录 . . . 等等
  • 如果他选择登录,他将被转移到一个Register()方法,该方法在方法本身中询问诸如姓名等详细信息。
    我想知道,在创建单元测试时,是否有任何方法可以模拟用户输入,或者是否必须重写这些方法,以便通过参数传递值并以这种方式进行单元测试。

    理想情况下,您的代码应该编写得易于测试,并且输入方法无关紧要。这意味着输入应该与业务逻辑分离,以便在编写测试时完全忽略输入部分

    例如,不使用全局
    扫描器
    和如下类似的东西,这使得方法依赖于输入法

    public void login() {
        String username = scanner.nextLine();
        // check that the username is valid
    }
    
    一个对输入法没有任何依赖关系的更易测试的方法是

    public void login(String username) {
        // check that the username is valid
    }
    
    另外,请确保您了解什么构成了正确的单元测试。对于这种方法,显而易见的测试是您可以使用有效凭据登录,而不能使用无效凭据登录