【发布时间】: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 ????