dist.integrity
我试图模拟它并返回地图,但是它要求提供文件的确切位置,并且不能与随机字符串参数一起使用并抛出Null指针异常。
public static Map<String,SrnPastPricing> parseFile(String fileLoc) throws IOException {
String fileAsString = FileUtils.readFileToString(new File(FilenameUtils.normalize(fileLoc)));
fileAsString = fileAsString.replace("\r", "");
String[] lines = fileAsString.split("\\n");
String headingsRow = lines[0];
String[] headings = headingsRow.split(",");
System.out.println("Reading first line as the heading row...");
Map<String,SrnPastPricing> pastPricingMap = new HashMap<String,SrnPastPricing>();
for (int x = 1; x < lines.length; x++) {
SrnPastPricing pastPricing = parseLine(lines[x], headings);
pastPricingMap.put(pastPricing.ClaimId, pastPricing);
}
return pastPricingMap;
}
请告诉我模拟它的写法。
答案 0 :(得分:1)
如果它是静态文件,我通常将示例文件放在src/resources
文件夹中,然后从类路径中加载该文件。
如果您在实例内部运行this.getClass().getResource("/log4j.properties").getFile()
。
如果您以静态方法运行,则CurrentJavaClassName.class.getResource("/log4j.properties").getFile()
答案 1 :(得分:0)
通过将fileAsString作为参数传递来使方法可测试。因此,您的方法应如下所示:
public static Map<String,SrnPastPricing> parseFile(String fileAsString) throws IOException {
fileAsString = fileAsString.replace("\r", "");
String[] lines = fileAsString.split("\\n");
String headingsRow = lines[0];
String[] headings = headingsRow.split(",");
System.out.println("Reading first line as the heading row...");
Map<String,SrnPastPricing> pastPricingMap = new HashMap<String,SrnPastPricing>();
for (int x = 1; x < lines.length; x++) {
SrnPastPricing pastPricing = parseLine(lines[x], headings);
pastPricingMap.put(pastPricing.ClaimId, pastPricing);
}
return pastPricingMap;
}
在代码中的某处,您会这样称呼它:
String fileAsString = FileUtils.readFileToString(new File(FilenameUtils.normalize(fileLoc)));
if (fileAsString != null) {
parseFile(fileAsString);
}
这是最简单的方法,也是正确的方法。
答案 2 :(得分:0)
我以这种方式加载文件:
File resourcesDirectory = new File("src/test/resources/data/request/ParseFile");
resourceDirectory.getAbsolutePath();