我如何编写Scalatest测试来匹配列表中的值和范围?
如何使用Scalatest编写测试,以查看列表是否包含给定范围内的double 例如,我如何检查以下列表中的元素大约为10我如何编写Scalatest测试来匹配列表中的值和范围?,scala,scalatest,Scala,Scalatest,如何使用Scalatest编写测试,以查看列表是否包含给定范围内的double 例如,我如何检查以下列表中的元素大约为10 val myList = List(1.5, 2.25, 3.5, 9.9) 对于列表之外的值,我可以编写如下测试 someVal should be (10.0 +- 1.0) 对于可以精确知道其值的列表,我会写 someList should contain (3.5) 但据我所知,使用范围测试列表中的项目没有好方法。差不多 someList should co
val myList = List(1.5, 2.25, 3.5, 9.9)
对于列表之外的值,我可以编写如下测试
someVal should be (10.0 +- 1.0)
对于可以精确知道其值的列表,我会写
someList should contain (3.5)
但据我所知,使用范围测试列表中的项目没有好方法。差不多
someList should contain (10.0 +- 1.0)
似乎不起作用。知道我如何编写一个优雅的测试来实现这一点吗?您可以使用公差数字来指定双精度:
import org.scalatest.FlatSpec
import org.scalactic.TolerantNumerics
import org.scalatest.Matchers._
class MyTest extends FlatSpec {
implicit val doubleEquality = TolerantNumerics.tolerantDoubleEquality(0.1)
9.9d should be(10.0 +- 1.0)
List[Double](1.5, 2.25, 3.5, 9.9) should contain(10.0)
}
这将失败:
List[Double](1.5, 2.25, 3.5, 9.8) should contain(10.0)
这应该成功:
List[Double](1.5, 2.25, 3.5, 9.9) should contain(10.0)