Java Assert Double是NaN

时间:2016-02-22 12:18:03

标签: java junit assert nan

我试图断言我的双重是NaN。 这是一段代码:

var a = new int[1000000000]

代码无法编译,private Double calculateIt(String input){...} assertEquals(Double.NaN, calculateIt("input text")); 被定义为原始

Double.NaN

为了使断言工作,我用Na对象包装NaN。

public static final double NaN = 0.0d / 0.0;

有更短的方法吗?

4 个答案:

答案 0 :(得分:8)

您可以使用:

boolean isNan = Double.isNaN(calculateIt("input text"));
assertTrue(isNan);

Double.NaN值无法与==进行比较(Double.NaN == Double.NaN将返回false),因为NaN被视为特殊值。

更多信息:

答案 1 :(得分:1)

带有assertEquals(double, double, double)

assertEquals(Double.NaN, calculateIt(...), 0.0)

assertThat(calculateIt(...), isNan())Hamcrest

  

更好的方法

最能说明意图的是什么?哪个可以浏览并轻松查看该方法的测试结果?

答案 2 :(得分:1)

您可以尝试以下方法:

assertTrue(Double.compare(Double.NaN, calculateIt("input text")));

希望这有助于你。

答案 3 :(得分:0)

较短的Double.valueOf("NaN")或静态导入valueOf("NaN"),但它与您已有的基本相同。