Visual Studio 2008单元测试一直在失败

Ger*_*and 4 c# unit-testing

我创建了一种基于双精度列表计算调和平均值的方法.但是当我运行测试时,即使输出结果相同,它仍然会失败.

我的调和方法:

public static double GetHarmonicMean(List<double> parameters)
{
    var cumReciprocal = 0.0d;
    var countN = parameters.Count;

    foreach( var param in parameters)
    {
        cumReciprocal += 1.0d/param;
    }

    return 1.0d/(cumReciprocal/countN);
}
Run Code Online (Sandbox Code Playgroud)

我的测试方法:

[TestMethod()]
public void GetHarmonicMeanTest()
{
    var parameters = new List<double> { 1.5d, 2.3d, 2.9d, 1.9d, 5.6d };
    const double expected = 2.32432293165495; 
    var actual = OwnFunctions.GetHarmonicMean(parameters);
    Assert.AreEqual(expected, actual);
}
Run Code Online (Sandbox Code Playgroud)

运行测试后,显示以下消息:

Assert.AreEqual失败.预期:<2.32432293165495>.实际:<2.32432293165495>.

对我而言,两者都是相同的价值观.

有人可以解释一下吗?或者我做错了什么?

Dav*_*d M 7

Assert.AreEqual的双重过载采用"delta"参数来允许双精度不精确.您应该为此参数指定一个小值.