用于读取文件的方法的单元测试



为读取文件的方法编写单元测试的最佳方法是什么?

我应该像这样模拟文件吗?

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的临时折叠式规则(或者,如果使用junit5,其等效扩展名)来创建用于测试的输入文件。

然后,您将让getDumpAsFile()返回此文件,并且您的测试将在您创建的文件上运行。测试完成后,Junit将丢弃临时文件夹,从而遵守自我控制的测试原理。

我认为这是最紧密地反映 getDumpAsList方法的实际行为的方法。

相关内容

  • 没有找到相关文章

最新更新