gpt4 book ai didi

c# - 如何为 Nunit CollectionAssert 测试创建 IComparer?

转载 作者:太空狗 更新时间:2023-10-29 17:42:26 24 4
gpt4 key购买 nike

我希望在 NUnit 中为以下场景创建以下测试:我们希望测试正在创建的新计算方法产生的结果与旧系统的结果相似。所有值之间可接受的差异(或者更确切地说是平等的重新定义)已定义为

 abs(old_val - new_val) < 0.0001

我知道我可以遍历新列表中的每个值并与旧列表中的值进行比较并测试上述条件。

如何使用 Nunit 的 CollectionAssert.AreEqual 方法(或某些 CollectionAssert 方法)实现这一点?

最佳答案

当前答案已过时。从 NUnit 2.5 开始,CollectionAssert.AreEqual 的重载采用了 System.Collections.IComparer

这是一个最小的实现:

public class Comparer : System.Collections.IComparer
{
private readonly double _epsilon;

public Comparer(double epsilon)
{
_epsilon = epsilon;
}

public int Compare(object x, object y)
{
var a = (double)x;
var b = (double)y;

double delta = System.Math.Abs(a - b);
if (delta < _epsilon)
{
return 0;
}
return a.CompareTo(b);
}
}


[NUnit.Framework.Test]
public void MyTest()
{
var a = ...
var b = ...
NUnit.Framework.CollectionAssert.AreEqual(a, b, new Comparer(0.0001));
}

关于c# - 如何为 Nunit CollectionAssert 测试创建 IComparer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7172324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com