java - 如何在java中编写简单的文本测试用例

标签 java bash redirect testcase

您好,我正在编写我的第一个 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/

相关文章:

java - java webapp 中动态类加载的最佳方法?

java - 我可以在 Eclipse 的类型层次结构 View 中看到接口(interface)吗?

javascript - window.location.replace() 不适用于表单

bash - 并行 grep 模式多个文件

php - 从 PHP 重定向流式传输的 Android MediaPlayer 不工作!

apache - 让 .htaccess RewriteRule 重定向到脚本 "in current dir"(而不是显式路径)

Java排序数组列表以找到最大整数

java - Android应用架构: how to share behavior between all screens

python - 将具有多个子选项的命令行选项传递给 python 脚本 -- shell 脚本

linux - 将路径列表中的文件粘贴到单个输出文件中