你如何使用 `BeApproximately` 的值在循环的每次迭代中都会发生变化?
Posted
技术标签:
【中文标题】你如何使用 `BeApproximately` 的值在循环的每次迭代中都会发生变化?【英文标题】:How do you use `BeApproximately` with a value that changes in each iteration of a loop? 【发布时间】:2021-01-01 02:11:21 【问题描述】:说明
我正在迭代 2 个列表 我想比较列表中每个点的 2 个值 我希望该值在彼此的 0.1% 以内完成重现问题的最小示例
var sheetRows = new List<float> -24.0, 0.1, 10;
var loads= new List<float> -24.0, 0.1, 10.05;
foreach ((var xl, var db) in sheetRows.Zip(loads, (n, w) => (n, w)))
xl.Should().BeApproximately(db, db*0.001f);
预期行为:
通过
实际行为:
Expected xl to approximate -24F +/- -0.024F, but -24F differed by 0F.
at FluentAssertions.Execution.LateBoundTestFramework.Throw(String message)
at FluentAssertions.Execution.TestFrameworkProvider.Throw(String message)
at FluentAssertions.Execution.DefaultAssertionStrategy.HandleFailure(String message)
at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
at FluentAssertions.Execution.AssertionScope.FailWith(String message, Object[] args)
at FluentAssertions.NumericAssertionsExtensions.FailIfDifferenceOutsidePrecision[T](Boolean differenceWithinPrecision, NumericAssertions`1 parent, T expectedValue, T precision, T actualDifference, String because, Object[] becauseArgs)
at FluentAssertions.NumericAssertionsExtensions.BeApproximately(NumericAssertions`1 parent, Single expectedValue, Single precision, String because, Object[] becauseArgs)
at RoutingTests.UnitResponseModuleTests.U010_CheckTranslationAsync(Int64 sId, String sheetName, Int32 expected, Int32 excelRowCount) in C:\Users\sogscx\source\repos\Float\Compute\Test\RoutingTests\UnitResponseModuleTests.cs:line 480
at NUnit.Framework.Internal.TaskAwaitAdapter.GenericAdapter`1.BlockUntilCompleted()
版本
您使用的是哪个版本的 Fluent 断言?最新的
您的目标是哪个 .NET 运行时和版本?例如。 .NET 框架 4.6.1 或 .NET Core 2.1。.NET Core 3.1 运行 NUnit
【问题讨论】:
@DTul,我知道这行得通。我想要每个值的偏差。即浮点值只有 6 到 8 位,所以如果它是 10000 和另一个 0.001,那么每个 10% 是不同的! 【参考方案1】:您为精度传递了一个负值。这很可能行不通。
【讨论】:
谢谢。就是这样..表明在 Fluent-assertions 中需要进行参数验证以上是关于你如何使用 `BeApproximately` 的值在循环的每次迭代中都会发生变化?的主要内容,如果未能解决你的问题,请参考以下文章