Как генерировать значения для параметров класса case в scala

У меня есть класс case с 250 полями:

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

Есть ли способ использовать проверку scala для генерации значений для своего параметра

Нерелевантные вопросы, которые я рассмотрел:
Как сгенерировать объекты case для каждого поля в классе case Scala с помощью макроса?
Динамически генерировать класс case в Scala
Создать произвольный экземпляр для класса case, который содержит `Numeric` в ScalaCheck?


person Adrian    schedule 29.07.2016    source источник
comment
Вы можете использовать подход Generic из бесформенной библиотеки для преобразования HList в экземпляр класса case. Вот пример: github.com/milessabin/shapeless/blob/master/examples/src/main/.   -  person devkat    schedule 29.07.2016


Ответы (1)


Используйте scalacheck-shapeless:

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

implicitly[Arbitrary[Data]]

Приведенный выше фрагмент делает следующее:

  • Вызвать shapeless.Generic[Data] с помощью неявного макроса, чтобы преобразовать класс вашего дела в shapeless.HList
  • Рекурсивно получить все Arbitrary[String], Arbitrary[Int] и т. д. для каждого поля
  • Соберите все это в новый экземпляр Arbitrary[Data]
person OlivierBlanvillain    schedule 29.07.2016