繁体   English   中英

为什么此Microsoft单元测试失败?

[英]Why does this Microsoft Unit Test Fail?

我有一个单元测试,并且从“距离”计算中存储在实际变量中的数字是6.07328028312884,但仍然表示测试失败。 为什么?

        double expected = 6.07328028312884; 
        double actual;
        actual = target.Distance((double)latitude, (double)longitude);
        actual = actual / 1000;

        Assert.AreEqual(expected, actual);

浮点数在设计上是不准确的。 要测试这么多的准确性可能行不通。 actual价值是多少? 由于四舍五入和计算机上浮点数的一般性质,您可能会发现它只是一点点地偏离了预期。

正如Matt所说,比较两个浮点数是否相等不是一个好主意,请使用Math.Abs(expected-actual)<epsilon和一个小的epsilon。

我不确定Microsoft UT,但是在CPPUNIT中有一个特殊的宏

CPPUNIT_ASSERT_DOUBLES_EQUAL(预期的,实际的)

这可能会检查期望和实际差异的绝对值是否小于某些ε。 Microsoft UT中必须有类似功能

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM