当前位置: 首页 > 知识库问答 >
问题:

IncompatibleClassChangeError:用ScalaCheck和ScalaTest实现类

欧君之
2023-03-14
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)
     ...

我在这里漏掉了什么?

共有1个答案

齐思淼
2023-03-14

ScalaTest 2.2.6与ScalaCheck 1.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)。因此,不能保证您可以简单地将ScalaCheck 1.12.x替换为1.13.y。ScalaCheck只在相同的次要版本系列(1.12.1、1.12.2、1.12.3等)中保持二进制兼容性。

 类似资料:
  • 我参考DataframeGenerator示例编写了单元测试,该示例允许您动态生成模拟dataframes 在成功执行以下命令后 在运行以下命令之一时,我会得到输出中显示的错误 输出 null null EDIT-1 My unit-test类包含以下几个方法 而如下所示

  • 我正在尝试使用PowerMockito来模拟Android Robolectric测试中的一些静态方法。我使用的是JUnit 4.8.2、Robolectric2.2、Mockito 1.9.5和PowerMock 1.9.5。由于我必须使用RoboElectricTestRunner,所以我尝试使用PowerMockRule来引导PowerMock。然而,当使用PowerMock运行测试时,不幸

  • 我想使用基于属性的测试来测试我的 scala 程序。我写道: 但是这似乎是错误的,因为当我使用ScalaTest运行这个类时,我进入控制台: 所以问题是:我的财产是伪造的,但测试通过了!?!有人看到我的代码有什么问题吗? 谢谢… 编辑:我试图调用myProperty而不是myProperties。检查,但这并不是更好,因为这样,生成器似乎被忽略了(只启动了一个测试,而不是100个)。

  • 使用ScalaTest 3.0.0环境:Scala 2.11.8、sbt 0.13.5、IntelliJ 14.1.4 建筑sbt只有 以下测试通过。然而,IntelliJ在MyMiniTest下方标记了一条弯曲的红线,并显示警告信息: 类“MyMiniTest”必须声明为抽象的,或实现抽象成员“convertToLegacyEqualizer[T](左:T):TripleEqualSupport

  • Scala Test 是一个开源测试框架。ScalaTest旨在令测试更加高效。其开发者Bill Venners(Artima主编,同时也是资深的程序员)这样描述到: “ScalaTest 1.0是比JUnit和TestNG更加高阶的测试编写工具,这个Scala应用在JVM上运行,可以测试Scala以及Java代码。除了与JUnit 和TestNG的深层集成,同时还支持Ant任务,与maven集成

  • 我有一个非常简单的场景:测试任何一对长度为10的随机字符串作为参数传递给一个case类对(一个正在测试的自定义字符串)应该是相同的。 但是,当我从sbt运行我只得到这个编译错误: 斯卡拉切克烹饪书中的一个注解说 该错误消息表明,我们的属性检查没有按照布尔逻辑进行评估 我希望内部块最终应该返回布尔值。如果您能指出我在这个实现中理解基于属性的测试或使用Inside trait时缺少什么,我将不胜感激。