我是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
。
我可以看到“断言”和“测试”的其他方法签名,但我不能使用最基本的方法签名。
感谢您的帮助
答案 0 :(得分:2)
虽然我没有得到完全相同的错误消息,但在我意识到您需要两个JAR才能成功使用ScalaTest之前,我遇到了类似的整体问题:scala-reflect-2.11.4.jar
和scala-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的基础知识可能值得您花时间。