Scalacheck OutOfMemory异常

Scalacheck OutOfMemory异常,scala,scalatest,Scala,Scalatest,当然,我一定忽略了一些事情,但这里发生了什么 object MenuTreeArbitrary extends Properties("MenuTree") { lazy val genMenuDetails: Gen[MenuDetails] = for { id <- arbitrary[Int] label <- arbitrary[String] itemType <- arbitrary[String]

当然,我一定忽略了一些事情,但这里发生了什么

object MenuTreeArbitrary extends Properties("MenuTree") {

   lazy val genMenuDetails: Gen[MenuDetails] = for {
         id <- arbitrary[Int]
         label <- arbitrary[String]
         itemType <- arbitrary[String]
         formId <- arbitrary[Int]

        ms <- arbitrary[String]
        mv<- arbitrary[JsValue]
        items <- Gen.lzy(genMenuDetails)

      } yield MenuDetails(Some(id), label, itemType, Some(formId), Some(Map(ms->mv)), Some(List(items)))

 implicit lazy val menuDetailsArb: Arbitrary[MenuDetails] = Arbitrary(genMenuDetails)

  lazy val genMenuTree: Gen[MenuTree] = for {
      id <- arbitrary[Int]
       rootOrgId <- arbitrary[Int]
      isForMobile <- arbitrary[Boolean]
      otherJson <- Gen.lzy(arbitrary[MenuDetails])

  } yield MenuTree(id, Some(rootOrgId), isForMobile, otherJson)

 }
}

在执行forAll(genMenuTree)时,尽管代码使用的是Gen.lzy,但它在递归调用时抛出OfMemory。有什么想法吗

rg.scalatest.exceptions.GeneratorDrivenPropertyCheckFailedException: Exception "java.lang.StackOverflowError" (included as the TestFailedException's cause) was thrown during argument generation.
at org.scalatest.prop.Checkers$.doCheck(Checkers.scala:453)
at org.scalatest.prop.GeneratorDrivenPropertyChecks$class.forAll(GeneratorDrivenPropertyChecks.scala:915)
rg.scalatest.exceptions.GeneratorDrivenPropertyCheckFailedException: Exception "java.lang.StackOverflowError" (included as the TestFailedException's cause) was thrown during argument generation.
at org.scalatest.prop.Checkers$.doCheck(Checkers.scala:453)
at org.scalatest.prop.GeneratorDrivenPropertyChecks$class.forAll(GeneratorDrivenPropertyChecks.scala:915)