ScalaCheckとScalaTestを使用してテストを作成しようとすると、厄介な例外が発生します。これが私の依存関係です:
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)
}
}
これを実行しようとすると、次のようになります。
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)
...
ここで何が欠けていますか?
ScalaTest2.2.6はScalaCheck1.13.0と互換性がありません。 「scalacheck」%「1.12.5」にダウングレードすると役立ちます。
これは https://github.com/rickynils/scalacheck/issues/217 として報告されました。この問題は、次の解決策で解決されます。
ScalaTestの現在のすべてのリリース(2.2.6、3.0.0など)は、ScalaCheck 1.12.1に対して構築されています( https://github.com/scalatest/scalatest/blob/master/project/scalatest.scala#を参照) L134 )。したがって、ScalaCheck1.12.xを1.13.yに単純に交換できるという保証はありません。 ScalaCheckは、同じマイナーバージョンシリーズ(1.12.1、1.12.2、1.12.3など)内でのみバイナリ互換性を維持します。