流利的断言:大约比较两个数字集合

Posted

技术标签:

【中文标题】流利的断言:大约比较两个数字集合【英文标题】:Fluent Assertions: Compare two numeric collections approximately 【发布时间】:2013-06-07 22:10:51 【问题描述】:

我有两个双精度数组。有没有办法使用 FluentAssertions 使用 .BeApproximately() 技术逐个元素地比较数组?

一个范围值足以满足整个数组的需求。

例子:

double[] source =  10.01, 8.01, 6.01 ;
double[] target =  10.0, 8.0, 6.0  ;

// THE FOLLOWING IS NOT IMPLEMENTED
target.Should().BeApproximately(source, 0.01);   

有其他方法吗?

【问题讨论】:

【参考方案1】:

泛型集合断言有一个重载,它接受一个可用于在比较期间应用任何谓词的 Func。有了它,您可以执行以下操作:

source.Should().Equal(target, (left, right) => AreEqualApproximately(left, right, 0.01));

您唯一需要做的就是自己创建该方法。

【讨论】:

【参考方案2】:

我知道比较列表更可取,但您可以对其进行迭代并单独比较它们。我现在无法测试代码,但以下应该可以工作......

double[] source =  10.01, 8.01, 6.01 ;
double[] target =  10.0, 8.0, 6.0  ;

for(var i=0; i<source.Length; i++)
    target[i].Should().BeApproximately(source[i], 0.01)

【讨论】:

是的,这行得通,但我希望我能一次打印出所有违规行为。 希望我能提供更多帮助,但我不知道有什么更好的方法。我会投票赞成这个问题,看看我们能否得到更多关注。

以上是关于流利的断言:大约比较两个数字集合的主要内容,如果未能解决你的问题,请参考以下文章

流利的断言;结合集合和对象图比较断言

流利的断言应该AllBeEquivalentTo

如何使用流利断言断言集合中的所有项目?

用 ScalaTest 比较集合内容

如何使用流利的断言比较列表?

如何使用流利的断言比较对象图中的嵌套列表