【发布时间】:2015-07-08 10:32:18
【问题描述】:
在为浮点数或包含浮点数的对象(如向量或矩阵)编写测试时,我经常想测试的不是相等,而是“几乎相等”(差异允许为一些 epsilon)。
当使用ScalaTest FunSuite时,通常写成assert(xxx == yyy)。有了浮点数和点赞,我可以写 assert(math.abs(xxx - yyy)<epsilon),但我没有得到 ScalaTest assert macro 的好功能,即作为失败消息的一部分报告比较值。
如何在 ScalaTest 中执行浮点“几乎相等”的测试,以便在测试失败时将值写入失败消息的一部分?
测试示例:
import org.scalatest.FunSuite
class FloatTest extends FunSuite {
test("Testing computations") {
import math._
assert(sin(Pi/4)==sqrt(0.5))
assert(sin(Pi)==0)
}
}
【问题讨论】:
标签: scala floating-point scalatest