我在一个 CSV 文件中有大量数据,这些数据由 Java 读取(使用OpenCSV)。我想要的是每次方法访问文件以读取下一行。
想象一下 file.csv 看起来像:
1,1,1,1,
2,2,2,2,
我的课看起来像:
public class Stuff
private static int count = 0;
public int getFromFile(){
CSVReader reader = new CSVReader(new FileReader("file.csv"));
List<String[]> rows = reader.readAll();
reader.close();
System.out.println(rows.get(count)[0]);
count++;
}
}
如果运行两次,输出将是:
1
2
现在,一切正常,但是很难正确进行单元测试,因为静态计数变量的使用使得方法在任何一个测试中读取的哪一行取决于测试运行的顺序。另外,它通常让我觉得设计非常复杂.
那么,是否有一种更好的方法可以在后续方法调用中以一种好的、可测试的方式读取文件的后续行?我知道人们通常非常反对在可以避免的地方使用静态字段,那么这里可以避免吗?