我是 Scala 的新手,我正在尝试使用 ScalaTest .我将它的依赖项包含在我的 build.sbt 文件中
libraryDependencies++=Seq(
“org.scalatest”%“scalatest_2.11”%“2.1.7”%“测试”
)
并刷新 sbt,现在它出现在我的外部库文件夹中,所以我认为它已正确安装。现在我想做一个测试类。所以我在 src/test/scala 下创建了一个。我使用了 ScalaTest 网站首页的例子,它是
import collection.mutable.Stack
import org.scalatest._
class ExampleSpec extends FlatSpec with Matchers {
"A Stack" should "pop values in last-in-first-out order" in {
val stack = new Stack[Int]
stack.push(1)
stack.push(2)
stack.pop() should be (2)
stack.pop() should be (1)
}
it should "throw NoSuchElementException if an empty stack is popped" in {
val emptyStack = new Stack[Int]
a [NoSuchElementException] should be thrownBy {
emptyStack.pop()
}
}
}
但是当我运行这个类时我得到了错误
Error:scalac: bad symbolic reference. A signature in package.class refers to type compileTimeOnly
in package scala.annotation which is not available.
It may be completely missing from the current classpath, or the version on
the classpath might be incompatible with the version used when compiling package.class.
还有
Error:(4, 27) Reference to class FlatSpec in package scalatest should not have survived past type checking,
it should have been processed and eliminated during expansion of an enclosing macro.
class ExampleSpec extends FlatSpec with Matchers {
^
谁能告诉我问题出在哪里。看起来它没有识别 ScalaTest。但是它在我的外部库中,IntelliJ 的自动完成功能也显示它在那里。在我真正开始使用 ScalaTest 之前,我是否需要以某种方式刷新其他内容?
编辑:
另外,当我从 sbt 运行 test:compile
时,我得到了
[error] error while loading package, class file needed by package is missing.
[error] reference value <init>$default$2 of object deprecated refers to nonexisting symbol.
[error] error while loading Matchers, class file needed by Matchers is missing.
[error] reference value <init>$default$2 of object deprecated refers to nonexisting symbol.
[error] error while loading Assertions, class file needed by Assertions is missing.
[error] reference value internal of package scala.reflect.macros refers to nonexisting symbol.
[error] error while loading AbstractSuite, class file needed by AbstractSuite is missing.
[error] reference value <init>$default$2 of object deprecated refers to nonexisting symbol.
[error] error while loading Tolerance, class file needed by Tolerance is missing.
[error] reference value <init>$default$2 of object deprecated refers to nonexisting symbol.
[error] error while loading BeWord, class file needed by BeWord is missing.
[error] reference value <init>$default$2 of object deprecated refers to nonexisting symbol.
[error] error while loading ResultOfNotWordForAny, class file needed by ResultOfNotWordForAny is missing.
[error] reference value <init>$default$2 of object deprecated refers to nonexisting symbol.
[error] error while loading NotWord, class file needed by NotWord is missing.
[error] reference value <init>$default$2 of object deprecated refers to nonexisting symbol.
[error] 8 errors found
[error] (test:compile) Compilation failed
最佳答案
似乎 SBT 试图针对 scala 2.9.2 进行编译。 我猜你必须添加其中之一
scalaVersion := "2.10.4"
或
scalaVersion := "2.11.1"
到你的build.sbt
当然
libraryDependencies += "org.scalatest" %% "scalatest" % "2.1.7" % "test"
另外你可以试试最新的SBT launcher .
关于ScalaTest 规范编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23974896/