即使十进制数字是正确的,断言也会失败

时间:2015-08-06 13:13:27

标签: nunit assert

我有这两个值:

Expected Value (fResult)= 103393.431493782901937514
Actual Value   (output) = 103393.431493782901937514

当我断言该值时,我的预期结果被视为103393.431493783m

因为我的Assert失败了。任何人都可以在这方面提供帮助。

Assert.That(output, Is.EqualTo(fResult));

更多信息:实际值和预期值均为十进制数据类型

[TestCase("value1", "value2", 5, 103393.431493782901937514)]
public void converFormulaforPressure(String Fromunit, String toUnit, decimal Avalue, decimal fResult) {
    var output = ut1.Convert(ut1.GetUnit("Pressure", Fromunit), ut1.GetUnit("Pressure", toUnit), Avalue).Val;

    Assert.That(output, Is.EqualTo(fResult));
}

ut1.Convert是一种转换价值并给出实际结果的方法。

1 个答案:

答案 0 :(得分:3)

您需要提供容差级别,而不能将decimal作为TestCase参数传递。您提供的代码将最后一个值作为double传递,因此在运行断言时进行舍入。您可以使用TestCaseSource来解决此问题。

以下测试通过:

private static readonly object[] TestCases = {
    new object[] {"value1", "value2", 5m, 103393.431493782901937514m}
};

[Test, TestCaseSource("TestCases")]
public void TestExample(string fromUnit, string toUnit, decimal value, decimal fResult) {
    //Replace the line below with your convert method using values from testCase
    var output = 103393.431493782901937514m;

    Assert.That(output, Is.EqualTo(fResult).Within(0.00000000000001));
}