当尝试使用ScalaCheck和ScalaTest编写测试时,我遇到了一个令人讨厌的异常.这是我的依赖项:
I'm facing a nasty exception when trying to write a test using ScalaCheck and ScalaTest. Here's my dependencies:
libraryDependencies ++= Seq( "org.scalatest" %% "scalatest" % "2.2.6" % "test", "org.scalacheck" %% "scalacheck" % "1.13.0" % "test" )这是我的考试:
import org.scalatest.PropSpec import org.scalatest.prop.Checkers class MyPropSpec extends PropSpec with Checkers { property("List.concat") { check((a: List[Int], b: List[Int]) => a.size + b.size == (a ::: b).size) } }当我尝试运行此程序时,我会得到:
When I try to run this I'm getting:
DeferredAbortedSuite: Exception encountered when attempting to run a suite with class name: org.scalatest.DeferredAbortedSuite *** ABORTED *** java.lang.IncompatibleClassChangeError: Implementing class at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:760) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.URLClassLoader.defineClass(URLClassLoader.java:467) at java.URLClassLoader.access$100(URLClassLoader.java:73) at java.URLClassLoader$1.run(URLClassLoader.java:368) at java.URLClassLoader$1.run(URLClassLoader.java:362) at java.security.AccessController.doPrivileged(Native Method) at java.URLClassLoader.findClass(URLClassLoader.java:361) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ... java.lang.IncompatibleClassChangeError: Implementing class at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:760) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.URLClassLoader.defineClass(URLClassLoader.java:467) at java.URLClassLoader.access$100(URLClassLoader.java:73) at java.URLClassLoader$1.run(URLClassLoader.java:368) at java.URLClassLoader$1.run(URLClassLoader.java:362) at java.security.AccessController.doPrivileged(Native Method) at java.URLClassLoader.findClass(URLClassLoader.java:361) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ...我在这里想念什么?
推荐答案ScalaTest 2.2.6与ScalaCheck 1.13.0不兼容.降级为"scalacheck"%"1.12.5"会有所帮助.
ScalaTest 2.2.6 is incompatible with ScalaCheck 1.13.0. Downgrading to "scalacheck" % "1.12.5" helps.
这被报告为 github/rickynils/scalacheck/issues/217 .该问题已通过以下解决方法解决:
This was reported as github/rickynils/scalacheck/issues/217. The issue is closed with following resolution:
所有当前版本的ScalaTest(2.2.6、3.0.0等)都是根据ScalaCheck 1.12.1构建的(请参见 github/scalatest/scalatest/blob/master/project/scalatest.scala#L134 ).因此,不能保证您可以简单地将ScalaCheck 1.12.x换成1.13.y. ScalaCheck仅维护同一次要版本系列(1.12.1、1.12.2、1.12.3等)内的二进制兼容性.
All current releases of ScalaTest (2.2.6, 3.0.0 etc) are built against ScalaCheck 1.12.1 (see github/scalatest/scalatest/blob/master/project/scalatest.scala#L134). Therefore, there are no guarantees that you can simply swap out ScalaCheck 1.12.x for 1.13.y. ScalaCheck only maintains binary compatibility within the same minor version series (1.12.1, 1.12.2, 1.12.3 etc).
更多推荐
java.lang.IncompatibleClassChangeError:使用ScalaCheck和ScalaTest实现类
发布评论