scala - 如何在 ScalaCheck 中表达“暗示”,例如“如果整数 n * n = 0 则 n = 0”?
问题描述
我想用Scala的基于属性的测试工具ScalaCheck来表达一个属性
if an integer n * n = 0 then n = 0
如何在 ScalaCheck 中编写此属性?例如我知道
val myprop = forAll {(n: Int) => n + 1 - 1 = n}
但我不知道如何在 ScalaCheck 中表达“A 暗示 B”(没有将其简化为 Not-A 或 B,这看起来很笨拙)。
解决方案
使用==>
(隐含运算符)
val prop = forAll { n: Int =>
(n * n == 0) ==> n == 0
}
(请参阅他们的用户指南)问题是:在这个特定示例中,条件很难满足,因此 ScalaCheck 将在多次尝试后放弃(但至少它确实告诉您,否则您会得到误报,因为您的必要条件是从未检查过)。在这种情况下,您可以提供一个自定义生成器,以便它生成满足您条件的值。
推荐阅读
- c - C - 如何使用系统调用打印整数?
- android - Inspector:预计会找到至少一个 React 渲染器
- python - aws eb cli Windows 在 colorama 上获取版本错误
- r - 在R中将整数转换为字符串
- android - 房间更新查询只更新一行
- nutch - 如何使用 Apache Nutch 抓取 ajax 网站
- service-worker - 服务工作者 - 始终从网络和缓存资源提供服务
- git - Git - 使用系统代理
- php - 无法构建 Dockerfile - 无法找到包
- asp.net-core - 如何共享由主机管理但租户可以访问的实体?