我是编写测试用例的新手,请帮助我为以下方法编写测试用例。在此先感谢!
public void readFile() throws IOException{
linesProcessed = 0;
FileInputStream fileInStream = new FileInputStream(filePath);
DataInputStream dataInStream = new DataInputStream(fileInStream);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(dataInStream));
String strLine;
fileData.clear();
while(StringUtils.isNotBlank((strLine = bufferedReader.readLine()))) {
++linesProcessed;
processLine(strLine);
}
bufferedReader.close();
dataInStream.close();
fileInStream.close();
}
答案 0 :(得分:1)
这里有很多话要说。
首先,回答您的问题。当某个方法不返回任何内容时,您仍然可以检查某个“其他状态”是否得到相应更新。
在您的情况下,一个有意义的观察点可能是该呼叫
processLine(strLine);
换句话说:您可以看到该方法在做什么,并以某种方式验证是否已调用另一个方法。
然后:您实际上编写了难以测试的代码。原因之一是因为此方法在字符串(指向文件)上开始工作。相反,您可以将 reader 对象传递给该方法。这样就不需要使用PowerMock了。您只需准备一个具有已知内容的阅读器对象,然后可以验证是否执行了与准备好的内容匹配的操作!
除此之外,您应该了解尝试资源的知识,还应该学习更多有关如何进行IO的知识。关闭所有3个流没有意义。当您在其他流上创建读取器并关闭外部读取器时,该“基本”流会自动关闭。