您好,我正在编写我的第一个 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 文件
包含多行应用程序就会崩溃。例如: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 脚本工作吗?谢谢
最佳答案
如果您是 java 的新手,并且您仍在塑造自己的风格和做事方式,我将向您推荐 2 个技巧:
1) 使用 Scanner阅读您的输入。使用nextLine() Scanner 对象的方法可能就是您要查找的内容。
2) 设计您的代码,使其可通过 JUnit 进行测试.
仍然,在您的 readString()
方法中,从 try block 中删除 return answer;
。
更新:尝试在您的函数中实现以下内容:
a) 当扫描仪实例 hasNextLine() 为真时 ->
b) 调用扫描器实例 nextLine() 方法 ->
c) 解析该行,并查看它是否等于 'quit' ->
d) 实现相应的逻辑 if
情况。
关于java - 如何在java中编写简单的文本测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8618306/