添加return语句仅用于测试方法而不在实际代码本身中使用它是否是错误的做法?
作为一个示例,我正在测试一个read方法,然后是一系列方法,这些方法最终将创建一个对象,该对象的属性被其正在读取的文件行所吸收。
据我了解,可以使用Mockito测试读取方法,而不必添加return语句。或者可以测试是否调用了另一种方法(readPerLine
),但是我还没有找到合适的测试程序来执行此操作。这两个选项可能意味着如果使用正确的编码过程,我的一般性问题就不重要了,如果可以,请告诉我。
但是,目前,以下两个选项似乎是测试read方法(一部分)的最简单方法:
我当前编写的read方法的示例代码:
public void readFile(String filename) {
FileReader reader;
BufferedReader br;
String line = null;
try {
br = new BufferedReader(new FileReader(filename));
while ((line = br.readLine()) != null) {
readPerLine(line); //converts line into properties for an object.
}
br.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
所以我还没有解决以下难题;
答案 0 :(得分:1)
我建议不要在该方法中添加return语句以启用测试,而应该对方法进行重新设计以分离某些功能。
我认为问题出在这里:
readPerLine(line); //converts line into properties for an object.
也许您在此方法中做得太多。您可以将其分解为几种不同的方法,例如:
如果执行此操作,则可以检查每个步骤的功能并为每个步骤进行测试。
在测试主要方法readFile(String filename)
时,您可以使用Mokito来检查是否使用正确的参数调用了每个方法