ScalaTest 规范编译错误

标签 scala testing dependencies

我是 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/

相关文章:

scala - 加一链表: Functional Approach

scala - Stream 什么时候需要懒惰?

unit-testing - 参数化 Spock 设置

maven - 从多模块 Maven 项目构建单个 fat jar - 包括测试类

scala - 如何重命名保存在 Azure 数据湖中的文件

scala - 在 Scala 中扩展 Scopt OptionParser

testing - 处理命令时发生未知的服务器端错误。原始错误 : You must include a platformName capability?

C++ 组合,一个对象如何知道它所在的类?

maven - 在本地找不到元数据

javascript - 处理对象属性之间的复杂依赖关系(自动更新依赖属性)