我有一个简单的Java控制台应用程序,并希望自动测试其输入/输出。输入始终只有一行,但输出有时不止一行。
我该怎么做? (使用Linux shell / Python / Eclipse / Java)
答案 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