Nunit 即使十进制数字正确,断言也会失败
我有两个价值观:Nunit 即使十进制数字正确,断言也会失败,nunit,assert,Nunit,Assert,我有两个价值观: Expected Value (fResult)= 103393.431493782901937514 Actual Value (output) = 103393.431493782901937514 当我对该值进行断言时,我的预期结果被认为是 1033 93.4314937 83M < /代码> 正因为如此,我的断言失败了。在这方面谁能帮忙 Assert.That(output, Is.EqualTo(fResult)); 更多信息:实际值和预期值都是十进制数据类
Expected Value (fResult)= 103393.431493782901937514
Actual Value (output) = 103393.431493782901937514
当我对该值进行断言时,我的预期结果被认为是<代码> 1033 93.4314937 83M < /代码>
正因为如此,我的断言失败了。在这方面谁能帮忙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是一种转换值并给出实际结果的方法。您需要提供公差级别,您不能将
十进制
作为测试用例
参数传递。您提供的代码以双精度传递最后一个值,因此在运行assert时舍入。您可以使用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));
}
我曾尝试使用“在(0.00000000 1)或在(0.00000000 5)范围内”来确定容差级别,对于某些测试用例,它失败了,因为我必须在小数点匹配后确认14位数字。然后您应该将容差级别增加到14位:。在(0.00000000000000 1)
范围内,即使NUB的小数点超过14位,VS 2013在预期值中采用的小数位数(103393.4314937)较少,测试用例失败