如何在 scala 中为 case class 参数生成值

How to generate values for case class parameters in scala

我有一个案例 class 有 250 个字段:

case class Data(field1:String, field2:Int, .. )

有没有办法使用 scala 检查为其参数生成值

我看过的不相关问题:
How to generate case objects for every field in a Scala case class using macro?
Dynamically generate case class in Scala

使用scalacheck-shapeless:

import org.scalacheck.Shapeless._
import org.scalacheck.Arbitrary._

implicitly[Arbitrary[Data]]

以上代码片段执行以下操作:

  • 通过隐式宏调用 shapeless.Generic[Data] 将您的案例 class 转换为 shapeless.HList
  • 递归获取每个字段的所有Arbitrary[String]Arbitrary[Int]
  • Assemble 所有这些到一个新的 Arbitrary[Data] 实例中