1

我想使用 scalacheck 和 scalatest 来测试一些具有随机输入值的对象。首先,我尝试了一个简单的示例,但是如果我通过 Eclipse 或通过 sbt 启动它,它会引发错误。代码是:

    package test

    import org.scalatest._
    import org.scalatest.prop.GeneratorDrivenPropertyChecks
    class SamplePropGenCheck extends PropSpec with GeneratorDrivenPropertyChecks with Matchers {

      property("Int simple test") {
        forAll("a")  { a : Int =>
          whenever (a > 0) {
            (a * 2) should be (a + a)
          }
        }
      }
    }

在执行时,我有这个错误:

    *** RUN ABORTED ***
      java.lang.AbstractMethodError:
   org.scalatest.prop.Configuration$$anon$1.TestParams()Lorg/scalacheck/Test$Parameters$TestParams$;
      at org.scalacheck.Test$Parameters$class.$init$(Test.scala:98)
      at org.scalatest.prop.Configuration$$anon$1.<init>(Configuration.scala:332)
      at org.scalatest.prop.Configuration$class.getParams(Configuration.scala:332)

我将 scalatest_2.11-2.2.1 和 scalacheck_2.11-1.12.3 与 scala 2.11.6 一起使用

当我使用 TableDrivenPropertyChecks 而不是 GeneratorDrivenPropertyChecks 进行其他测试时,它运行良好。

我在文档或谷歌中找不到任何帮助。是代码错误、错误还是版本问题?有人可以帮我找到解决方案吗?

4

1 回答 1

5

尝试降级到 scalacheck 1.12.2。

我看到与 scalacheck_2.10-1.12.3 相同的错误。它适用于 scalacheck_2.10-1.12.2。

编辑:ScalaCheck 1.12.3 存在 ScalaTest 兼容性问题,该问题已在 1.12.4-SNAPSHOT 中修复。 https://github.com/rickynils/scalacheck/issues/165

于 2015-05-28T16:02:00.737 回答