如何测试Java应用程序的输入和输出?

时间:2012-02-25 18:56:41

标签: java testing

我有一个简单的Java控制台应用程序,并希望自动测试其输入/输出。输入始终只有一行,但输出有时不止一行。

我该怎么做? (使用Linux shell / Python / Eclipse / Java)

3 个答案:

答案 0 :(得分:7)

您可以在Linux中使用管道。例如,像这样运行你的问题:

java myProgram < input_file > output_file

这将从input_file运行myProgram和feed输入。所有输出都将写入名为output_file的文件中。

现在创建另一个名为expected_file的文件,您应手工创建该文件以指定您在某些输入上所期望的确切输出(具体来说,您在input_file中的输入)。

然后你可以使用diff来比较output_file和expected_file:

diff output_file expected_file

这将输出两个文件之间的任何差异。如果没有差异,则不会返回任何内容。具体来说,如果返回某些内容,您的程序将无法正常工作(或者您的测试错误)。

最后一步是使用某些脚本语言(如Ruby(:))或Bash(:()。

链接所有这些命令。

这是进行此类测试的最直接方式。如果您需要编写更多测试,请考虑使用一些测试框架,如junit。

答案 1 :(得分:1)

在eclipse中,您可以使用“运行配置”设置将控制台输出记录到物理文件。运行 - &GT;运行配置 - &gt;选择您的应用程序 - &gt;转到常用标签 - &gt;在“标准输入和输出”部分中指定物理文件路径。

答案 2 :(得分:0)

您可以使用watch命令执行任何Unix命令。监视命令将被执行,直到您通过CTRL + C终止它或终止进程。

$ watch -n 5 ls

默认情况下,watch命令使用2秒间隔,您可以使用-n选项更改它。

或者您可以在.bashrc(来自here

中编写这样的函数
function run() {
    number=$1
    shift
    for i in {1..$number}; do
      $@
    done
}

并像这样使用

run 10 command