首页 > 解决方案 > 如何获取批处理文件以自动填充 Java 代码提示的输入

问题描述

我需要通过批处理文件为我的 java 类运行一系列测试用例,这样,当我运行批处理文件时,我的 java 代码运行 10 次,自动填充 java 类提示的输入。

该类要求三个输入,但我不知道如何让我的批处理脚本将变量输入到正在运行的 java 代码中。这是我到目前为止所得到的:

set PATH=C:\Program Files\Java\jdk-9.0.1\bin 
del *.class
echo compiling
javac *.java
java tempconvtr
pause

标签: javabatch-fileautomated-tests

解决方案


在 UNIX 中,您可以通过管道自动输入 java 程序。

假设您的 java 程序需要 3 个输入。您可以在执行 java 程序的批处理脚本中使用以下语法。

{ echo 'input1'; echo 'input2'; echo 'input3'; } | java -cp $CLASSPATH javaProgram

在 UNIX 中,管道方法有效:例如以下是 JAVA 程序,它从用户那里获取 3 个输入。

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner input = null;
        try {
            // creating a Scanner object
            input = new Scanner(System.in);
            System.out.println("Enter an integer: ");

            // read an int value
            int data1 = input.nextInt();

            System.out.println("Using nextInt(): " + data1);

            // read an int value
            int data2 = input.nextInt();

            System.out.println("Using nextInt(): " + data2);

            // read an int value
            int data3 = input.nextInt();

            System.out.println("Using nextInt(): " + data3);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (input != null) {
                input.close();
            }
        }
    }
}

如果我们通常执行它,那么:

jdk/bin/java -cp . Main
Enter an integer:
1
Using nextInt(): 1
2
Using nextInt(): 2
3
Using nextInt(): 3

现在我正在输入管道:

{ echo '1'; echo '2'; echo '3'; } |jdk/bin/java -cp . Main

Enter an integer:
Using nextInt(): 1
Using nextInt(): 2
Using nextInt(): 3

在 Windows 上,以下是等效的方法:

D:\workspace_europa\DatastructureAndAlgorithms\src>
(echo 1& echo 2& echo 3) | d:\InstalledProgramms\Java\jdk1.5.0_22\bin\java -cp . Main
    Enter an integer:
    Using nextInt(): 1
    Using nextInt(): 2
    Using nextInt(): 3

推荐阅读