Intellij 中断言和测试的 ScalaTest 错误

标签 scala intellij-idea scalatest

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

import org.scalatest.FunSuite

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

我收到 2 个错误。它无法解析具有该签名的“assert”引用,并且对于“test”方法,它表示未指定的值参数Seq[Tag]: () => BoxedUnit

我可以看到“assert”和“test”的其他方法签名,但我无法使用最基本的方法签名。

感谢您的帮助

最佳答案

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

如果您坚持手动执行此操作,您还应该确保您的测试位于标记为“测试”目录的目录中 - 因此以绿色突出显示:您可以在相同的“模块”上实现此目的”选项卡,但位于“源”子选项卡而不是“依赖项”。您还需要检查“依赖项”子选项卡的“范围”列中,您添加的 jar 被标记为“测试”而不是“编译”。

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

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

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

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

关于Intellij 中断言和测试的 ScalaTest 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27769649/

相关文章:

eclipse - 为什么相同的代码在 Eclipse 中有效,但在 IntelliJ 中甚至无法编译

scala - ScalaTest 的 Selenium DSL 的奇怪超时

scala - ScalaTest 可以在没有同步调用的情况下检测超时吗(比如在无限循环中?)

scala - Scalatest 是否提供 NaN 的匹配器?

scala - 在 parboiled2 中,我应该如何报告解析器操作中的错误?

scala - Netty SslHandler 头痛

java - 将外部 jar (lib/*.jar) 添加到 IntelliJ IDEA 项目的正确方法

Scala 我可以创建多少个 future

scala - printwriter 在 hdfs 路径中只考虑一个斜杠而不是双斜杠

java - IntelliJ 中的 Spring 应用程序上下文文件位置