我试图断言我的双重是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;
有更短的方法吗?
答案 0 :(得分:8)
您可以使用:
boolean isNan = Double.isNaN(calculateIt("input text"));
assertTrue(isNan);
Double.NaN
值无法与==
进行比较(Double.NaN == Double.NaN
将返回false
),因为NaN
被视为特殊值。
更多信息:
答案 1 :(得分:1)
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")
,但它与您已有的基本相同。