我现在正在尝试使用dart:test功能。
我可以写这样的东西:
expect(areaUnderCurveWithRectangleRule(f1, 0,1,1000), equals(2));
但是我们知道,在 float/double 计算中,没有精确相等这样的东西。所以我想知道是否有一个大致相同的测试方法?true如果它们的差异在某个epsilon(例如,1E-6)或某个百分比内,它将返回两个双精度值?
如果没有,这会向 Dart 团队提出一个很好的功能请求吗?
dart:testcloseTo为此目的提供了一个匹配器:
expect(areaUnderCurveWithRectangleRule(f1, 0,1,1000), closeTo(2, epsilon));
Run Code Online (Sandbox Code Playgroud)
请注意,closeTo使用绝对增量,这可能不适合具有非常不同幅度的浮点值。
如果您想要一个基于百分比进行比较的版本,那么closeTo使用您自己的函数应该很容易包装,例如:
Matcher closeToPercentage(num value, double fraction) {
final delta = value * fraction;
return closeTo(value, delta);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
486 次 |
| 最近记录: |