我应该如何为此功能编写JUnit

时间:2019-11-18 18:45:06

标签: java junit mockito

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;
}

请告诉我模拟它的写法。

3 个答案:

答案 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();