【问题标题】:Java Assert Double is NaN [closed]Java Assert Double 是 NaN [关闭]
【发布时间】:2016-06-03 20:51:14
【问题描述】:

我试图断言我的替身是 NaN。 这是一个代码sn-p:

private Double calculateIt(String input){...}

assertEquals(Double.NaN, calculateIt("input text"));

代码没有编译,Double.NaN被定义为原语

public static final double NaN = 0.0d / 0.0;

为了使断言起作用,我用一个 Double 对象包装了 NaN。

assertEquals(new Double(Double.NaN), calculateIt("input text"));

有没有更短的方法来做到这一点?

【问题讨论】:

  • 更好是见仁见智

标签: java junit assert nan


【解决方案1】:

你可以使用:

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

Double.NaN 的值不能与== 比较(Double.NaN == Double.NaN 将返回false),因为NaN 被认为是特殊的。

更多信息:

【讨论】:

    【解决方案2】:

    您可以尝试以下方法:

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

    希望这对您有所帮助。

    【讨论】:

      【解决方案3】:

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

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

      更好的方法

      什么最能说明意图?您可以略读哪些内容并轻松查看该方法正在测试什么?

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2015-04-30
          • 2016-06-04
          • 1970-01-01
          • 1970-01-01
          • 2017-06-09
          • 2013-08-19
          • 1970-01-01
          • 2023-01-31
          • 2016-08-20
          相关资源
          最近更新 更多