ScalaTest 规范编译错误 [英] ScalaTest Spec Compilation Error

查看:13
本文介绍了ScalaTest 规范编译错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是 Scala 新手,我正在尝试使用 ScalaTest.我将它的依赖项包含在我的 build.sbt 文件中libraryDependencies++=Seq(org.scalatest"%scalatest_2.11"%2.1.7"%测试")

I am new to Scala and I am trying to use ScalaTest. I included its dependency in my build.sbt file as libraryDependencies++=Seq( "org.scalatest" % "scalatest_2.11" % "2.1.7" % "test" )

并刷新了 sbt,现在它出现在我的外部库文件夹中,所以我认为它安装正确.现在我想做一个测试课.所以我在 src/test/scala 下创建了一个.我使用了 ScalaTest 网站首页的示例,即

and refreshed sbt and now it appears in my External Libraries folder so I think it was installed correctly. Now I want to make a test class. So I created one under src/test/scala. I used the example from the ScalaTest website's frontpage which is

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()
    }
  }
}

但是当我运行这个类时,我得到了错误

However when I run this class I get the error

 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 之前,我是否需要刷新其他内容?

Could someone tell me what the problem is. It looks like it is not recognizing ScalaTest. However it is in my External Libraries and IntelliJ's auto-complete also shows that it is there. Do I somehow need to refresh something else before I can actually start using ScalaTest?

当我从 sbt 运行 test:compile 时,我得到

Also when I run test:compile from sbt I get

  [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 进行编译.我想你必须添加一个

It seems SBT tries to compile against scala 2.9.2. I guess you have to add one of

scalaVersion := "2.10.4"

scalaVersion := "2.11.1"

到你的 build.sbt

当然

libraryDependencies += "org.scalatest" %% "scalatest" % "2.1.7" % "test"

此外,您还可以尝试最新的 SBT 启动器.

Additionally you can try the latest SBT launcher.

这篇关于ScalaTest 规范编译错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆