嗨,我正在编写我的第一个 Java 应用程序,我有一些测试用例(*.tc 文件)我想通过这个脚本定向到应用程序:
for f in `ls *.tc`; do
echo "Current Testcase: $f"
x=${f%.*}
java Main < $x.tc > $x.out
if diff "$x.out" "$x.should"; then
echo "passed testcase $f"
let PASSED=PASSED+1
else
echo "failed testcase $f"
let FAILED=FAILED+1
fi
done
问题是我不太明白为什么一旦tc file
包含多行应用程序就会发疯。例如:quit.tc
包含
quit
并且就像我手动输入“退出”时一样工作,然后测试用例通过。但是,当我写另一个 tc:quit2.tc
其中包含
lala
test
quit
应用程序在第一个命令后退出(因为 readString 函数之后似乎返回 null)。这是负责读取的函数:
public String readString(){
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String answer = null;
try {
answer = br.readLine();
return answer;
}
catch(IOException ioe) {
System.out.println("IO Error");
}
return answer;
}
当我重定向到应用程序时,我不知道为什么或何时此函数返回 null,这似乎是问题所在。你能帮忙,让我可以让 tc 脚本工作吗?谢谢