创建 Double 以测试空检查时抛出空指针异常
Null pointer exception thrown when creating a Double to test null check
这可能是一个愚蠢的问题,但我有一个方法可以将 Doubles 或 BigDecimals 转换为格式化的字符串:
//There is also a method that accepts BigDecimals
public String convertToCurrencyString(Double aAmount) {
if(aAmount == null){
return "[=10=].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。有没有办法阻止这种情况的发生,或者这是正常行为?空检查的需要是数据库中有一些较旧的记录将这些 Doubles 和 BigDecimals 设置为 null
new Double(null)
调用 Double(String)
构造函数,它试图将给定的字符串解析为双精度数。但是对于 null
字符串,它会因 NullPointerException 而失败。
将 null Double 传递给您的方法的正确方法是简单地调用:
String resultForNull = convertToCurrencyString(null);
此外,由于您的方法不使用封闭的 class' 状态,因此将其设为 static
.
可能有意义
这可能是一个愚蠢的问题,但我有一个方法可以将 Doubles 或 BigDecimals 转换为格式化的字符串:
//There is also a method that accepts BigDecimals
public String convertToCurrencyString(Double aAmount) {
if(aAmount == null){
return "[=10=].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。有没有办法阻止这种情况的发生,或者这是正常行为?空检查的需要是数据库中有一些较旧的记录将这些 Doubles 和 BigDecimals 设置为 null
new Double(null)
调用 Double(String)
构造函数,它试图将给定的字符串解析为双精度数。但是对于 null
字符串,它会因 NullPointerException 而失败。
将 null Double 传递给您的方法的正确方法是简单地调用:
String resultForNull = convertToCurrencyString(null);
此外,由于您的方法不使用封闭的 class' 状态,因此将其设为 static
.