【问题标题】:ScalaTest errors on assert and test in IntellijIntellij 中断言和测试的 ScalaTest 错误
【发布时间】:2015-03-02 09:46:58
【问题描述】:

我对 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。一切顺利,我可以在我的项目中看到External Libraries 中的 scalatest jar。当我创建我的第一个测试时,它导入了org.scalatest.Funsuite,并且类扩展了 FunSuite,一切都很好。然后我尝试了一个从 Internet 复制的非常简单的测试。

import org.scalatest.FunSuite

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

我收到 2 个错误。它无法解析带有该签名的“断言”引用,并且对于“测试”方法它说unspecified value parameters Seq[Tag]: () => BoxedUnit

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

感谢您的帮助

【问题讨论】:

    标签: scala intellij-idea scalatest


    【解决方案1】:

    虽然我没有收到完全相同的错误消息,但我遇到了类似的总体问题,直到我意识到您需要另外两个 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 的基础知识可能值得您花点时间。

    【讨论】:

    • 我的 scala-sdk-2.11.4 中确实包含了 scala-reflect.jar 和 scala-xml_2.11-1.o.2 jar 我已经将测试目录设置为你描述的。我尝试将范围从“编译”更改为“测试”,但不幸的是并没有改变任何东西。我仍然有同样的错误。
    • 我按原样放回原样,即使我仍然有 2 个错误,我继续运行测试,它工作得很好。如果我断言(真)测试通过,如果我断言(假)测试失败。那么为什么 IntelliJ 会在编辑器中报告错误,即使它运行正常?
    • 有时在这种情况下,使用 File/"Invalidate Caches / Restart" 并单击"Invalidate and Restart" 会有所帮助。我在使用 Scala 的 Idea 14 中遇到过很多这样的问题。它还可以帮助检查文件/设置中的其他 Scala 设置:在“语言和框架”/“Scala”和/“Scala 编译服务器”下,以及“构建、执行、部署”/“编译器”/“Scala”下编译器”。基本上只是寻找戏剧性的不一致。
    • “使缓存无效/重新启动”...它工作。非常感谢!
    猜你喜欢
    • 2011-03-25
    • 1970-01-01
    • 2021-01-17
    • 2014-05-24
    • 2016-05-14
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    相关资源
    最近更新 更多