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

如何测试Java应用程序的输入和输出?,java,testing,Java,Testing,我有一个简单的Java控制台应用程序,希望自动测试其输入/输出。输入总是只有一行,但输出有时不止一行 我该怎么做?(使用Linux shell/Python/Eclipse/Java)您可以在Linux中使用管道。例如,按如下方式运行您的问题: java myProgram < input_file > output_file 这将输出两个文件之间的任何差异。如果没有差异,则不会返回任何内容。具体地说,如果返回了某些内容,则说明您的程序无法正常工作(或者您的测试出错) 最后一步是用

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


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

您可以在Linux中使用管道。例如,按如下方式运行您的问题:

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

最后一步是用Ruby(:)或Bash(:())等脚本语言链接所有这些命令


这是最直接的进行这种测试的方法。如果您需要编写更多的测试,请考虑使用一些测试框架,如JUnit。< /P> < P>在Eclipse中,您可以使用运行配置设置将控制台输出记录到物理文件。Run->运行配置> >在“标准输入”中选择应用程序->转到通用选项卡>。“输出”部分指定物理文件路径。

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

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

或者您可以在.bashrc中编写这样的函数(从)

像这样使用它

run 10 command

测试是什么意思?给我们举个例子。如果应用程序是你的,你可以(也就是说,应该)将main()与其他逻辑分开,这样你就可以用xUnit之类的东西来测试你的代码。你应该注意,管道的使用并不特定于Linux。同样的事情也适用于Windows和Mac OS X。
function run() {
    number=$1
    shift
    for i in {1..$number}; do
      $@
    done
}
run 10 command