我现在正在尝试使用 dart:test
特征。
我可以写这样的东西:expect(areaUnderCurveWithRectangleRule(f1, 0,1,1000), equals(2));
但是我们知道,在 float/double 计算中,没有精确相等这样的东西。所以我想知道是否有 大致相等 测试方法?它将返回 true
对于两个 double 值,如果它们的差异在某个范围内 epsilon
(例如,1E-6)或某个百分比?
如果没有,这会向 Dart 团队提出一个很好的功能请求吗?
最佳答案
dart:test
提供 closeTo
用于此目的的匹配器:
expect(areaUnderCurveWithRectangleRule(f1, 0,1,1000), closeTo(2, epsilon));
请注意
closeTo
使用绝对增量,这可能不适合具有非常不同幅度的浮点值。如果你想要一个基于百分比比较的版本,应该很容易包装
closeTo
使用您自己的功能,例如:Matcher closeToPercentage(num value, double fraction) {
final delta = value * fraction;
return closeTo(value, delta);
}
关于unit-testing - Dart 测试大致相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61037193/