使用fgets()自动化测试程序

3
我目前正在进行一个类似于Bash的项目。然而,我需要使用数千个测试来测试这个项目,这是无法手动检查的。因此,我想自动执行测试。
我的程序使用fgets()获取用户输入。我知道如何直接向程序发送参数,但是当程序启动时,它会显示程序的提示符。如何在标准输入上cat包含测试的文件,以使程序能够解释测试?(并在终端中获得程序输出)。

8
您是否希望使用“program < testfile”命令?或者您想隐藏提示符? - Fred Foo
1个回答

0

假设你的所有测试输入都存储在一个名为"test.input"的文件中(每行都是程序的完整输入),你可以在bash中执行以下操作:

export LINE_NO=0
cat test.input | while read LINE; do echo "$LINE" | ./program > results.$LINE_NO;
   LINE_NO=$(($LINE_NO + 1));
done

基本上,针对test.input中的每一行,上述命令将把它提供给程序并将程序的结果存储在results.0、 results.1、results.2等中,其中results.number中的数字是test.input文件的行号。

希望这可以帮到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接