scalacheck 案例类随机数据生成器

标签 scala testing scalacheck

我正在尝试使用 Scalacheck 生成随机数据。我有一个具有许多属性的案例类层次结构。到目前为止,我发现填充案例类的唯一方法是这样的:

case class Data(a: String,
                b: String,
                c: String)

val genLigneDecompte: Gen[Data] = for {
  ag <- Gen.alphaStr
  bg <- Gen.alphaStr
  cg <- Gen.alphaStr
} yield Data(
    a = ag,
    b = bg,
    c = cg
  )

对于具有 10-20 个属性的案例类来说,这非常乏味。我想知道是否有办法以某种方式使其自动化......

最佳答案

我相信有人会想出一个解决方案,使用 shapeless 对元数进行抽象。 .但是有一些辅助方法可以从不同数量的函数生成 Gen[T] 实例,这些方法可以与 case 类伴随对象的 apply 方法一起使用

case class Data(a: String, b: String, c: String)

val dataArb = Arbitrary(Gen.resultOf(Data))
// equivalent to
// val f: (String, String, String) => Data = Data.apply
// val gen: Gen[Data] = Gen.resultOf(f)
// val arb: Arbitrary[Data] = Arbitrary(gen)

关于scalacheck 案例类随机数据生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33370733/

相关文章:

scala - 用于激发 Dataframe 的结果集

ScalaCheck 专门针对属性的最低成功测试

scala - 使用 scalacheck 测试有效的状态转换

scala - 如何解决 eclipse 2019 中的 Scala 错误?

Scala 和 Clojure 都在一个项目中

scala - 在 Scala 中为父类(super class)生成构造函数

python - 为导入的库静音 Pytest 库输出

laravel - 如何测试外部API?

python - 当工作流测试失败时,如何避免在 Github 中推送?

scala - Gen.sequence 忽略给定 Traversable 的大小