我刚刚开始使用ScalaTest,我使用以下内容比较我的规范中的两个双打,如下所示:
it should "calculate the price" in {
val x = new X(10,10,12,1000)
assert(x.price() === 185.92)
}
Run Code Online (Sandbox Code Playgroud)
即使我输入了错误的185.92值来与价格函数返回的值进行比较(在上述情况下实际上返回10.23),规范也正在通过.我有其他规格,我只是比较Ints,他们按预期工作.但涉及的Doubles是无论如何.除了assert我应该用来比较之外还有其他功能Doubles吗?
编辑:
def price () : Double
Run Code Online (Sandbox Code Playgroud)
Spi*_*lov 13
它看起来像你有一个隐含的Equality[Double]范围实例org.scalactic.TolerantNumerics,其中的文档就在这里.
该文档的示例是:
implicit val doubleEquality = TolerantNumerics.tolerantDoubleEquality(0.01)
Run Code Online (Sandbox Code Playgroud)
但看起来有人在你的情况下以一个非常大的容差值实例化了它.
您还可以考虑使用+-以下方法尝试显式容差:
assert(x.price() === 185.92 +- 0.01)
Run Code Online (Sandbox Code Playgroud)
actual shouldBe (expected +- tolerance)如果使用FlatSpec,你可以简单地做; 其他规范有类似的匹配器而不是shouldBe. 它在失败的情况下提供比 更好的消息assert,并且代码与其他测试一致。
| 归档时间: |
|
| 查看次数: |
6472 次 |
| 最近记录: |