Intellij 中断言和测试的 ScalaTest 错误

ScalaTest errors on assert and test in Intellij

我是 Scala 和 Intellij 的新手,也是 ScalaTest 的新手。我已经使用最新的 Scala 插件设置了 Intellij 14 和 Scala 2.11.4,一切正常。然后我尝试介绍ScalaTest,我很困惑。我从 scalatest.org 下载了最新版本的 ScalaTest (scalatest_2.11-2.2.1.jar)。我进入我的项目结构并选择 "Modules",单击绿色加号并添加 scalatest_2.11-2.2.1.jar。一切顺利,我可以在我的项目中的 External Libraries 中看到 scalatest jar。当我创建我的第一个测试时,它导入了 org.scalatest.Funsuite 和 class 扩展的 FunSuite,一切都很好。然后我尝试了一个我从互联网上复制的非常简单的测试。

import org.scalatest.FunSuite

class MyTest extends FunSuite {
    test("this is a test") {
        assert(true)
  }
}

我得到 2 个错误。它无法解析具有该签名的 "assert" 引用,对于 "test" 方法,它表示 unspecified value parameters Seq[Tag]: () => BoxedUnit

我可以看到 "assert" 和 "test" 的其他方法签名,但我不能使用最基本的方法签名。

感谢您的帮助

虽然我没有收到完全相同的错误消息,但我遇到了类似的总体问题,直到我意识到您需要另外两个 JAR 才能成功使用 ScalaTest:scala-reflect-2.11.4.jarscala-xml-2.11-1.0.2.jar

如果您坚持手动执行此操作,您还应确保将测试放在标记为 "tests" 目录的目录中——因此以绿色突出显示:您可以在相同的 "Modules" 选项卡,但在 "Sources" 子选项卡中而不是 "Dependencies"。您还需要检查在 "Dependencies" 子选项卡的 "Scope" 列中,您添加的 jar 标记为 "Test" 而不是 "Compile"。

另一方面,如果您在 IntelliJ 中创建 SBT 项目而不是常规的 Scala 项目,则只需将以下内容添加到 build.sbt:

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

出现提示时重新导入 build.sbt,然后您就可以开始编写和 运行 测试:所有依赖项和测试目录都已正确设置并且全部 "just works"。我刚刚以这种方式创建了一个空项目,运行 你的例子。从开始到结束大约花了一分钟。

显然,您面临着在手动管理 JAR 和学习另一种工具之间进行权衡,但此时学习 SBT 的基础知识可能值得您花时间。