创建Double以测试空检查时抛出空指针异常

时间:2015-01-28 14:13:55

标签: java unit-testing junit junit4

这可能是一个愚蠢的问题,但我有一个方法可以将Doubles或BigDecimals转换为格式化的字符串:

//There is also a method that accepts BigDecimals
public String convertToCurrencyString(Double aAmount) {
    if(aAmount == null){
        return "$0.00";
    }
    NumberFormat numFormat = DecimalFormat.getCurrencyInstance(Locale.US);
    numFormat.setMinimumFractionDigits(2);
    String amount = numFormat.format(aAmount);
    return amount;
}

我目前正试图通过实例化Double来尝试使用JUnit测试此方法:

Double nullDouble = new Double(null);

问题是在创建Double时抛出NullPointerException。有没有办法阻止这种情况发生,还是这种正常行为?空检查的必要性是数据库中有一些旧的记录将这些双打和BigDecimals设置为空

1 个答案:

答案 0 :(得分:2)

new Double(null)调用Double(String)构造函数,它尝试将给定的字符串解析为double。但是使用null字符串时,它会因NullPointerException而失败。

将null Double传递给方法的正确方法是简单地调用:

String resultForNull = convertToCurrencyString(null);

此外,由于您的方法不使用封闭类'状态,它可能是有道理的static