【问题标题】:How to automate application based on command line?如何基于命令行自动化应用程序?
【发布时间】:2025-12-15 19:35:01
【问题描述】:

我有一个使用命令提示符运行的基于 Java 的应用程序。我目前正在手动测试它。我想自动化这个过程。我应该使用什么工具或脚本?

例如:

  1. 首先我将运行java 命令来运行.java 文件。
  2. 我的申请将为我提供 5 个选项。例如
    一世。添加
    ii.减法
    iii.乘 iv.划分。

它应该选择其中一个选项并添加数字并验证结果与预期结果。所有这些都将使用命令提示符完成。

【问题讨论】:

  • already asked this question 得到了答案。不鼓励在 * 上重复发布。如果你不喜欢这个答案,你应该修改你的问题。

标签: shell batch-file automated-tests


【解决方案1】:

我知道您要求的是命令提示符解决方案,但您确实应该研究一下 JUnit。对于更多种类的测试条件,这将是一个更易于维护的解决方案。如果使用命令行,则必须解析所有输入和输出。为了真正测试您的代码,您不必通过命令行的中间部分(stdin、stdout);您应该有运行 Java 代码的 Java 代码,因为它可以访问变量。

如果您真的打算使用命令行,您必须向我们提供有关您的程序如何运行的更多详细信息。这只是在黑暗中拍摄:

inputs.txt(这些是您的程序的输入)

Add
4
6

test.bat

@ECHO OFF
:: I just assume that your program prompts for input and waits for stdin
java YourMainClass < inputs.txt > testOutput.txt 
:: Program prompts for an operation; "Add" is read from inputs.txt
:: Program prompts for values; "4" and "6" are read from inputs.txt
:: Program prints out the result, which is redirected to testOutput.txt
:: Now you have to read in the testOutput.txt file and look at the last line
FOR /F %%i IN (testOutput.txt) DO SET RESULT=%%i
:: The variable RESULT now contains your program's answer
:: Create a variable to compare your actual result with the expected result
SET EXPECTED=10
IF %RESULT% == %EXPECTED% ECHO "You were correct"
IF NOT %RESULT% == %EXPECTED% ECHO "You were not correct"

【讨论】:

    【解决方案2】:

    您需要使用批处理文件。将您的命令放入记事本文件并保存为.bat

    如果它们不是本机批处理命令,尽管您可能需要更改某些内容,但您需要先发布命令,然后我才能确认。

    【讨论】:

      【解决方案3】:

      标准输入可以输入到 java 应用程序中。如果您使用的是 bash,则可以这样做:

      java myapp.java < test1
      

      其中 myapp.java 是您的应用程序的主方法,而 test1 是您的测试输入(一个普通的旧文本文件)。

      【讨论】: