【问题标题】:scalatest - can't expand macros compiled by previous versions of Scalascalatest - 不能扩展以前版本的 Scala 编译的宏
【发布时间】:2017-12-12 00:06:18
【问题描述】:

所以我们有一个想要使用 Scalatest 测试的 Scala 程序(使用 Maven 构建)。我们正在运行 Scala 2.11.8 和 Scalatest 3.0.1(我们尝试了 3.0.3 无济于事)

当我们的测试使用assert() 宏运行任何东西时,我们会收到以下错误:

error: can't expand macros compiled by previous versions of Scala
       assert(true)
              ^

它指向true,但问题在于我们放入assert() 的任何内容。我们的 POM 对 Scalatest 有以下依赖:

<dependency>
    <groupId>org.scalatest</groupId>
    <artifactId>scalatest_2.11</artifactId>
    <version>3.0.1</version>
    <scope>test</scope>
</dependency>

我们试图执行的代码是:

import org.scalatest.{FlatSpec, _}
import org.junit.runner.RunWith
import org.scalatest.junit.JUnitRunner


@RunWith(classOf[JUnitRunner])
class Testing extends FlatSpec {
  //test
  var number = 0;
  "An empty Set" should "have size 0" in {
    assert(true)

  }
}

很多人说这是使用 Scala 2.11 但包含 2.10 依赖项的问题,但我们使用的是 2.11 版本。任何帮助将非常感激。我还应该指出,我们使用 Scala 2.10 进行了尝试,并且成功了。

【问题讨论】:

  • 该消息肯定涉及为错误的 Scala 版本编译的 something。您可能希望包含完整的 POM。请注意,使用显式 _2.11 而不是使用属性是一种反模式,这使得在 Scala 版本之间切换时很可能会意外留下 _2.10_2.12
  • 是的,它实际上使用了我填写的属性,所以你们知道它是什么。我将尝试以下答案,看看是否有另一个依赖项正在使用它。不幸的是,我周末把工作电脑留在了工作中。没有对 2.10 的引用,但 POM 中可能有 2.12 ????

标签: scala maven scalatest


【解决方案1】:

运行mvn dependency:tree 并找出哪些依赖项中有_2.10。 使用Dependency management 确保包含 _2.11 和 _2.10 被排除在外。

【讨论】:

  • 这绝对帮助我弄清楚了。原来我们的依赖项之一是包含一个 2.10 jar,其中包括 scalatest_2.10。非常感谢!
  • 很高兴它有帮助。
猜你喜欢
  • 1970-01-01
  • 2015-11-18
  • 1970-01-01
  • 2015-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-15
相关资源
最近更新 更多