这个问题在这里已有答案:
为读取文件的方法编写单元测试的最佳方法是什么。
我应该像这样嘲笑这个文件吗?
File dumpFile = Mockito.mock(File.class);
Mockito.when(getDumpAsFile()).thenReturn(dumpFile);
测试方法
public List<String> getDumpAsList() {
CSVReader reader = null;
List<String> errors = new ArrayList<>();
try {
File f = getDumpAsFile();
reader = new CSVReader(f, "UTF-8");
reader.setLinesToSkip(0);
reader.setFieldSeparator(new char[] {','});
reader.setTextSeparator('"');
while(reader.readNextLine()) {
String line = reader.getSourceLine();
if (line != null && isErrorLine(line)) {
errors.add(line);
}
}
} catch (FileNotFoundException e) {
} catch (Exception e) {
throw new RuntimeException("Cannot extract dumped items", e);
} finally {
if (reader != null) {
reader.closeQuietly();
}
}
return errors;
}
你可以使用JUnit的TemporaryFolder规则(或者,如果使用JUnit5,它的equivalent extension)来为你的测试创建一个输入文件。
然后,您将让getDumpAsFile()
返回此文件,您的测试将对您创建的文件进行操作。测试完成后,JUnit将丢弃临时文件夹,从而坚持自我控制的测试原则。
我认为,这是最接近getDumpAsList
方法实际行为的方法。