我如何编写 Scalatest 测试来将列表中的值与范围进行匹配?
How can I write a Scalatest test to match the values in a list against a range?
我如何使用 Scalatest 编写测试来查看列表是否包含给定范围内的双精度数?
例如,我如何检查以下列表是否有一个大约为 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 contain (10.0 +- 1.0)
好像不行。知道如何编写一个优雅的测试来完成这个吗?
您可以使用 TolerantNumerics 来指定双精度:
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)
我如何使用 Scalatest 编写测试来查看列表是否包含给定范围内的双精度数?
例如,我如何检查以下列表是否有一个大约为 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 contain (10.0 +- 1.0)
好像不行。知道如何编写一个优雅的测试来完成这个吗?
您可以使用 TolerantNumerics 来指定双精度:
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)