作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我希望在 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/
我是一名优秀的程序员,十分优秀!