Java断言双精度是NaN
我试图断言我的替身是NaN。 以下是一段代码片段:Java断言双精度是NaN,java,junit,assert,nan,Java,Junit,Assert,Nan,我试图断言我的替身是NaN。 以下是一段代码片段: private Double calculateIt(String input){...} assertEquals(Double.NaN, calculateIt("input text")); 代码不编译,Double.NaN被定义为原语 public static final double NaN = 0.0d / 0.0; 为了使断言有效,我用一个双对象包装NaN assertEquals(new Double(Double.Na
private Double calculateIt(String input){...}
assertEquals(Double.NaN, calculateIt("input text"));
代码不编译,Double.NaN
被定义为原语
public static final double NaN = 0.0d / 0.0;
为了使断言有效,我用一个双对象包装NaN
assertEquals(new Double(Double.NaN), calculateIt("input text"));
有没有较短的方法可以做到这一点?您可以使用:
boolean isNan = Double.isNaN(calculateIt("input text"));
assertTrue(isNan);
Double.NaN
值不能与=
进行比较(Double.NaN==Double.NaN
将返回false
),因为NaN
被视为特殊值
更多信息:
assertEquals(Double.NaN,calculateIt(…),0.0)
或
assertThat(calculateIt(…),isNan())
with
更好的方法
什么最能说明意图?你可以略读哪一个,并很容易地看到该方法正在测试什么?Shorter是Double.valueOf(“NaN”)或使用静态导入
valueOf(“NaN”)
,但它基本上与你已经使用的方法相同。你可以尝试以下方法:
assertTrue(Double.compare(Double.NaN, calculateIt("input text")));
希望这对您有所帮助。更好是意见问题