在Intellij中断言和测试时出现ScalaTest错误

时间:2015-01-04 19:50:54

标签: scala intellij-idea scalatest

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

import org.scalatest.FunSuite

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

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

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

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

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

如果您坚持要手动执行此操作,还应确保将测试放在标记为" tests"的目录中。目录 - 因此以绿色突出显示:您可以在相同的"模块"选项卡,但在"来源"子标签而不是"依赖关系"。您还需要在" Scope"中检查它。 "依赖关系"的列子标签,您添加的罐子标记为"测试"而不是"编译"。

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

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

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

显然,您正在面对手工管理JAR和学习另一种工具之间的权衡,但在这一点上学习SBT的基础知识可能值得您花时间。