java.lang.IncompatibleClassChangeError: Implementando clase con ScalaCheck y ScalaTest
(1)
Estoy enfrentando una desagradable excepción cuando intento escribir una prueba usando ScalaCheck y ScalaTest. Aquí están mis dependencias:
libraryDependencies ++= Seq(
"org.scalatest" %% "scalatest" % "2.2.6" % "test",
"org.scalacheck" %% "scalacheck" % "1.13.0" % "test"
)
Aquí está mi prueba:
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)
}
}
Cuando intento ejecutar esto obtengo:
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.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.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.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
...
¿Que me estoy perdiendo aqui?
ScalaTest 2.2.6 es incompatible con ScalaCheck 1.13.0. La degradación a "scalacheck"% "1.12.5" ayuda.
Esto se informó como https://github.com/rickynils/scalacheck/issues/217 . El problema se cierra con la siguiente resolución:
Todas las versiones actuales de ScalaTest (2.2.6, 3.0.0, etc.) se crean contra ScalaCheck 1.12.1 (consulte https://github.com/scalatest/scalatest/blob/master/project/scalatest.scala#L134 ). Por lo tanto, no hay garantías de que pueda simplemente cambiar ScalaCheck 1.12.x por 1.13.y. ScalaCheck solo mantiene la compatibilidad binaria dentro de la misma serie de versiones menores (1.12.1, 1.12.2, 1.12.3, etc.).