流利的断言:大约比较两个数字集合
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)
【讨论】:
是的,这行得通,但我希望我能一次打印出所有违规行为。 希望我能提供更多帮助,但我不知道有什么更好的方法。我会投票赞成这个问题,看看我们能否得到更多关注。以上是关于流利的断言:大约比较两个数字集合的主要内容,如果未能解决你的问题,请参考以下文章