【问题标题】: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);   

有其他方法吗?

【问题讨论】:

    标签: c# unit-testing nunit fluent-assertions


    【解决方案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)
      

      【讨论】:

      • 是的,这行得通,但我希望我能一次打印出所有违规行为。
      • 希望我能提供更多帮助,但我不知道有什么更好的方法。我会投票赞成这个问题,看看我们能否得到更多关注。
      猜你喜欢
      • 2016-10-19
      • 2022-03-23
      • 2020-02-18
      • 2016-11-08
      • 2017-09-20
      • 2020-03-16
      • 2014-02-13
      • 2021-11-21
      • 2012-02-25
      相关资源
      最近更新 更多