流畅断言:大致比较两个数值集合

9

我有两个double数组。是否有一种使用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);   

有没有其它的方法?

2个回答

12

泛型集合断言有一个过载的方法,它接受一个Func参数,您可以在比较过程中使用任何谓词。使用这个方法,您可以做出如下操作:

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

你需要做的唯一一件事就是自己创建那个方法。


1
我知道比较列表是更好的选择,但你可以迭代它们并逐个进行比较。我现在无法测试代码,但以下代码应该可以运行...
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)

是的,那个方法可行,但我希望能够一次性打印出所有违规情况。 - David H
希望我能更有帮助,但我不知道更好的方法。我会点赞这个问题,看看能否引起更多关注。 - Kevin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接