读取文件的方法的单元测试[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读取文件的方法的单元测试[重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

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

我应该像这样嘲笑这个文件吗?

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方法实际行为的方法。

以上是关于读取文件的方法的单元测试[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 单元测试:读取数据(输入)文件

使用OpenFileDialog c#的单元测试文件读取方法

单元测试私有代码[重复]

Spring Boot APP - 单元测试[重复]

在测试之间传递JUnit数据

单元测试框架unittest,ddt