基于属性的测试库开发指南
1. 基于属性的测试概述
基于属性的测试是一种强大的测试方法,其核心思想是将程序行为的规范与测试用例的创建解耦。程序员专注于指定程序的行为和对测试用例给出高级约束,框架则自动生成满足这些约束的测试用例,并运行测试以确保程序按指定方式运行。
以 ScalaCheck 为例,以下是一个简单的属性测试示例:
import org.scalacheck.{Gen, Prop}
val intList = Gen.listOf(Gen.choose(0, 100))
val prop =
Prop.forAll(intList)(ns =>
ns.reverse.reverse == ns) &&
Prop.forAll(intList)(ns =>
ns.headOption == ns.reverse.lastOption)
val failingProp =
Prop.forAll(intList)(ns => ns.reverse == ns)
scala> prop.check
+ OK, passed 100 tests.
scala> failingProp.check
! Falsified after 6 passed tests.
> ARG_0: List(0, 1)
在这个示例中, intList 是一个 Gen[List[Int]] 类型的生成器,它知道如何生成 List[Int]
超级会员免费看
订阅专栏 解锁全文
5800

被折叠的 条评论
为什么被折叠?



