Java断言双精度是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

我试图断言我的替身是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.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")));

希望这对您有所帮助。

更好是意见问题